猿问

我想要受影响的行数据和受 codeigniter 中的更新查询影响的列

有没有办法在更新查询后仅获取受影响的列?在涉及 10 列的更新查询之后,我知道只有 2 列真正更新(因为其他列的值没有改变)。为了记录目的,我需要知道更改后的列的名称。


$this->db->query("UPDATE `table1` SET name = $name,......................,column10=10 WHERE id=$id")->result();

$this->db->affected_rows();

这段代码给出了受影响的行数,但我想要数据和更新的列信息。


一只斗牛犬
浏览 178回答 1
1回答

FFIVE

据我所知,没有内置的 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";}这将分别打印每个更新列的新旧值。
随时随地看视频慕课网APP
我要回答