有没有办法在更新查询后仅获取受影响的列?在涉及 10 列的更新查询之后,我知道只有 2 列真正更新(因为其他列的值没有改变)。为了记录目的,我需要知道更改后的列的名称。$this->db->query("UPDATE `table1` SET name = $name,......................,column10=10 WHERE id=$id")->result();$this->db->affected_rows();这段代码给出了受影响的行数,但我想要数据和更新的列信息。
1 回答
FFIVE
TA贡献1797条经验 获得超6个赞
据我所知,没有内置的 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";
}
这将分别打印每个更新列的新旧值。
- 1 回答
- 0 关注
- 173 浏览
添加回答
举报
0/150
提交
取消