如何在以前的MySQL操作中获取受影响的行?

时间:2009-11-30 06:13:03

标签: php sql mysql

mysql_affected_rows用于获取之前MySQL操作中受影响的行数,但我希望在之前的MySQL操作中获得受影响的行。 例如:

update mytable set status=2 where column3="a_variable";

在此操作之前,某些行的状态已经是2,我希望在之前的MySQL操作中获得受影响的行,您无法通过发出

的查询来获取它
select * from mytable where status=2

那么如何做这项工作?

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中执行此操作,只需将表格内容加载到数组中并比较之前和之后的数组,任何新的/更改的数据都是您的答案(请注意: 非常不推荐这样做可能会导致服务器负载增加,具体取决于表中存储的数据量。