【问题标题】:Check if any cell was really changed by update (mysql, php)检查是否有任何单元格真的被更新(mysql,php)改变了
【发布时间】:2025-12-12 16:55:01
【问题描述】:

我的代码中有一个更新查询——我想检查这个更新是否真的改变了任何单元格——当我尝试 mysqli_affected_rows() 时——它返回给我的是行受到影响/改变,即使它们没有。

f.e.当我将值 'test' 更新为相同的值 'test' -> 它显示该行已更改,但我只想知道它何时更改(更新不同值时)

我怎样才能做到这一点? 我正在使用mysql和php

【问题讨论】:

  • 与当前值比较?
  • 您手头有旧值还是想获取然后比较?你为此写过代码吗?

标签: php mysql mysqli


【解决方案1】:

脏检查就是这样一种策略。它涉及在写入数据库之前进行检查。这样可以避免不必要的数据库往返。

流程如下:

  • 从数据库中检索记录
  • 仅当新值 != 原始值时才设置新值
  • 如果值已更改,则将记录标记为“脏”

一旦所有集合都被应用,如果记录是脏的,保存它。

【讨论】: