如何检查Codeigniter中仅特定表列是否受到影响?

时间:2019-05-08 07:38:27

标签: php codeigniter

当前,我具有用于表单编辑的控制器和模型。如果用户提交不同的值,则将修改数据库中的值,如果存在受影响的行,则将闪存消息设置为“成功”,并且如果用户提交了相同的数据但未修改该值,则将闪存消息设置为“ 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消息设置为“成功”

1 个答案:

答案 0 :(得分:0)

在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);