【问题标题】:How to check if only specific table column affected in Codeigniter?如何检查 Codeigniter 中是否只有特定的表列受到影响?
【发布时间】:2019-09-25 21:27:05
【问题描述】:

目前,我有用于表单编辑的控制器和模型。如果用户提交不同的值,这将修改数据库中的值,如果有受影响的行,将闪存消息设置为“成功”,如果用户提交相同的数据而没有修改值,则将闪存消息设置为“nochange” ”。

           if($this->db->affected_rows() > 0 ) {
               $this->session->set_flashdata('success','Database is updated');
               redirect('registrar');
           } else {
               $this->session->set_flashdata('nochange','There is no changes in database');
               redirect('registrar');
           } 

在 Codeigniter 中,如何检查是否只有特定列受到影响?

例如,如果我在数据库中的表有 12 列,如果用户只更改第 10 列中的值,则将 flash 消息设置为“nochange”。

如果用户更改了除第 10 列之外的其他列的值,则将 flash 消息设置为“成功”

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    CodeIgniter 或 php 中没有内置功能来执行此操作。

    您必须先获取整个条目,然后再对其进行更新。然后根据您所需的逻辑逐列将提交的值与条目的当前值进行比较。

    示例伪代码:

    $q = $this->db->get_where('table', array('id' => $id))->row();
    
    $change = false;
    
    if ($this->input->post('col1') !== $q->col1) {
        $change = true;
    }
    
    ...
    
    if ($this->input->post('col10') == $q->col10) {
        $change = false;
    }
    
    
    $this->db->update('table', $data);
    

    【讨论】:

      猜你喜欢
      • 2018-09-19
      • 2013-05-30
      • 2022-11-11
      • 2015-06-04
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多