为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
一只斗牛犬 2021-11-05 15:23:41
有没有办法在更新查询后仅获取受影响的列?在涉及 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";

}

这将分别打印每个更新列的新旧值。


查看完整回答
反对 回复 2021-11-05
  • 1 回答
  • 0 关注
  • 173 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信