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

Php 如何在以前的MySQL操作中获取受影响的行?,php,sql,mysql,Php,Sql,Mysql,mysql\u impacted\u rows是获取上一个mysql操作中受影响的行数,但我想获取上一个mysql操作中受影响的行数。 例如: update mytable set status=2 where column3="a_variable"; 在此操作之前,有些行的状态已经是2,我想在之前的MySQL操作中获取受影响的行,您不能通过发出 select * from mytable where status=2 那么如何做这项工作呢?您所询问的实现和功能来自PHP,请用PHP标记您

mysql\u impacted\u rows是获取上一个mysql操作中受影响的行数,但我想获取上一个mysql操作中受影响的行数。 例如:

update mytable set status=2 where column3="a_variable";
在此操作之前,有些行的状态已经是2,我想在之前的MySQL操作中获取受影响的行,您不能通过发出

select * from mytable where status=2

那么如何做这项工作呢?

您所询问的实现和功能来自PHP,请用PHP标记您的问题


为了回答您的问题tho,为了执行您建议的操作,您需要在更改之前保留SQL表的副本,并将其与更改之后的表进行比较,由此产生的差异就是您的答案。在PHP中,只需将表内容加载到数组中,并比较前后的数组即可完成此操作,任何新的/更改的数据都是您的答案(请注意:强烈建议您不要这样做,因为这可能会导致服务器上的负载增加,具体取决于表中存储的数据量。)

通过以下方法可以高效、简单地实现:

 select * from mytable where column3="a_variable" and status != 2;
 update mytable set status=2 where column3="a_variable";
第一个查询的结果是将要更改的行,而第二个查询实际上会更改这些行


如果这是一个高性能系统,您可能需要特别注意事务,以防止在这两个查询之间出现新行

没有理由认为这个问题是针对PHP的。从性能角度来看,您的建议是不可接受的。