mysql_affected_rows用于获取之前MySQL操作中受影响的行数,但我希望在之前的MySQL操作中获得受影响的行。 例如:
update mytable set status=2 where column3="a_variable";
在此操作之前,某些行的状态已经是2,我希望在之前的MySQL操作中获得受影响的行,您无法通过发出
的查询来获取它select * from mytable where status=2
那么如何做这项工作?
答案 0 :(得分:5)
可以通过以下方式有效且简单地实现:
select * from mytable where column3="a_variable" and status != 2;
update mytable set status=2 where column3="a_variable";
第一个查询的结果是要更改的行,第二个查询实际上更改了它们。
如果这是一个高性能系统,您可能需要特别注意事务,以防止新行在这两个查询之间滑动。
答案 1 :(得分:-1)
您要求的实现和功能来自PHP,请用PHP标记您的问题。
为了回答您的问题,为了做您所建议的事情,您需要在更改之前保留SQL表的副本,并在更改后将其与表进行比较,结果差异将是您的答案。您可以在PHP中执行此操作,只需将表格内容加载到数组中并比较之前和之后的数组,任何新的/更改的数据都是您的答案(请注意: 非常不推荐这样做可能会导致服务器负载增加,具体取决于表中存储的数据量。)