有沒有辦法在更新查詢后僅獲取受影響的列?在涉及 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 關注
- 196 瀏覽
添加回答
舉報
0/150
提交
取消