在PDO :: commit之后使用PDOStatement :: rowCount结果?

时间:2012-04-22 21:06:28

标签: php mysql transactions pdo pdostatement

在MySQL文档中,有一条关于在事务提交后使用mysql_affected_rows的说明: http://php.net/manual/en/function.mysql-affected-rows.php

  

注意:交易
  如果您正在使用事务,则需要在INSERT,UPDATE或DELETE查询之后调用 mysql_affected_rows(),而不是在COMMIT之后调用。

但是,PDOStatement::rowCount doc上没有这样的说明: http://www.php.net/manual/en/pdostatement.rowcount.php

这是否意味着在使用PDO对象时,INSERT,UPDATE或DELETE查询后提交不会影响受影响的行数?

1 个答案:

答案 0 :(得分:13)

为每个执行的查询返回PDOStatement。您可以在代码中随时使用PDOStatement-> rowCount()(在事务期间或之后,回滚/提交无关紧要)。每个对象都需要自我维护。

mysql_affected_rows具有该事务注释的原因是因为它只知道单个mysql连接资源。这意味着当您完成事务(提交/回滚)时,已向DB发送新查询,从而更改正在处理受影响行数的结果。