【发布时间】:2017-09-27 07:40:21
【问题描述】:
我假设affected_rows 返回最后一个查询中受影响的行数(例如UPDATE),num_rows 返回结果集中的行数(例如SELECT)。
我应该在 PDO 中使用什么?
PDOStatement::rowCount 返回该语句中受影响的行数,但对于大多数数据库不返回受SELECT 影响的行数。
【问题讨论】:
我假设affected_rows 返回最后一个查询中受影响的行数(例如UPDATE),num_rows 返回结果集中的行数(例如SELECT)。
我应该在 PDO 中使用什么?
PDOStatement::rowCount 返回该语句中受影响的行数,但对于大多数数据库不返回受SELECT 影响的行数。
【问题讨论】:
如果关联的 PDOStatement 执行的最后一条 SQL 语句是 SELECT 语句,某些数据库可能会返回行数 由该语句返回。但是,不能保证这种行为 适用于所有数据库,不应依赖于便携式 应用程序。
可以通过添加SQL_CALC_FOUND_ROWS 来强制匹配行数,如FOUND_ROWS 的MySQL 文档中所述
Paul Dixon 已经有相关的related answer 解释了一些细节
【讨论】:
FOUND_ROWS()
相当于affected_rows: rowCount() http://php.net/manual/de/pdostatement.rowcount.php
如果您想要选择的行数,请执行 count()。
也作为参考: PHP PDO - Num Rows
【讨论】: