【发布时间】:2012-04-22 21:06:27
【问题描述】:
在 MySQL 文档中,有一条关于在事务提交后使用 mysql_affected_rows 的说明:
http://php.net/manual/en/function.mysql-affected-rows.php
注意:交易
如果您使用事务,则需要在 INSERT、UPDATE 或 DELETE 查询之后调用 mysql_affected_rows(),而不是在 COMMIT 之后。
但是,PDOStatement::rowCount 文档中没有这样的注释:
http://www.php.net/manual/en/pdostatement.rowcount.php
这是否意味着在使用 PDO 对象时,在 INSERT、UPDATE 或 DELETE 查询之后提交不会影响受影响的行数?
【问题讨论】:
-
提交后,
affected_rows的含义变得不清楚。是整个事务影响的总行数吗?还是只是事务中最后一个操作完成的行数?如果存在回滚的嵌套事务,是否还应计算任何受影响/撤消的行,等等... -
@MarcB 问题是,它是一个
PDOStatement->rowCount(),即不是PDO->rowCount(),因此它应该对最后一个查询而不是最后一个事务进行行计数。 -
mysql_affected_rows() 是执行 PDOStatement->rowCount() 的另一种方式。两者都只能在 MySQL 完成后调用,否则不会影响任何行。
-
感谢@daemonfire300,但我相信您可能错过了问题的重点,即在使用事务时调用 PDO->rowCount() 的正确方法是什么。跨度>
标签: php mysql transactions pdo pdostatement