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