提问人:Vikas Rathor 提问时间:7/31/2019 最后编辑:Vikas Rathor 更新时间:8/1/2019 访问量:361
我想要受代码点火器更新查询影响的行数据和列
I want affected rows data and column which has affected by update query in codeigniter
问:
有没有办法在更新查询后仅获取受影响的列? 在涉及 10 列的更新查询之后,我知道只有 2 列是 真正更新了(因为其他列的值不会改变)。 出于日志记录目的,我需要知道已更改的列的名称。
$this->db->query("UPDATE `table1` SET name = $name,......................,column10=10 WHERE id=$id")->result();
$this->db->affected_rows();
此代码给出了受影响的行数,但我想要数据并更新 列信息。
答:
0赞
Hasta Dhana
8/1/2019
#1
据我所知,没有内置的 CodeIgniter 功能。不过,您可以将旧值与新值进行比较:
$last_record = $this->db->get_where('table1', array('id' => $id))->row_array();
$this->db->query("UPDATE `table1` SET name = $name,......................,column10=10 WHERE id=$id")->result();
// $this->db->affected_rows();
$new_record = $this->db->get_where('table1', array('id' => $id))->row_array();
$affected_columns = array_diff($new_record, $last_record);
foreach ($affected_columns as $field => $value) {
echo "[field] : $field\r\n";
echo "[old_value] : $last_record[$field]\r\n";
echo "[new_value] : $value\r\n";
echo "\r\n";
}
这将分别打印每个更新的列及其旧值和新值。
评论
0赞
Vikas Rathor
8/2/2019
谢谢!!这也是一个好主意,但是如果我们得到sql查询,这对我来说很容易,但没问题,它也可以这样工作。
评论
name