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

标签 php mysql transactions pdo

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

Note: Transactions
If you are using transactions, you need to call mysql_affected_rows() after your INSERT, UPDATE, or DELETE query, not after the COMMIT.

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

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

最佳答案

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

mysql_affected_rows 之所以有那个事务注释是因为它只知道一个 mysql 连接资源。这意味着当您完成事务(提交/回滚)时,一个新的查询已被发送到数据库,从而改变正在处理的受影响行数的结果。

关于php - PDOStatement::rowCount 结果在 PDO::commit 之后使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10272134/

相关文章:

php - 用于同期群分析的 MySql 查询

mysql - SQL 触发器是否按顺序运行?

postgresql - 我可以包装 session 以创建光滑的交易吗?

php - 如何检查 MySQL 'date' 列中是否存在特定日期?

php - 同一查询中的左连接和计数返回错误结果

javascript - 将用户直接带到事件日期与当前日期匹配的页面(分页)

mysql - SQL 查询,将 NULL 视为零

php - 我的 SQL 查询有什么问题?

mysql - 使用 INSTR() 连接 mySQL 中的表

sql - 将所有 Controller 操作包装在 Rails 中的事务中