PDO显然无法计算从选择查询返回的行数(mysqli具有num_rows变量)。
mysqli
num_rows
有没有办法做到这一点,而无需使用count($results->fetchAll())?
count($results->fetchAll())
根据手册,有一种 PDOStatement->rowCount方法;但不应使用 (引用) :
PDOStatement->rowCount
对于大多数数据库, PDOStatement::rowCount() 不返回受SELECT语句影响的行数。 而是使用 PDO::query() 发出SELECT COUNT(*)与您的预期SELECT 语句相同的谓词的语句,然后使用 PDOStatement::fetchColumn()检索将返回的行数。 然后,您的应用程序可以执行正确的操作。
PDOStatement::rowCount()
SELECT
PDO::query()
SELECT COUNT(*)
PDOStatement::fetchColumn()
如果您已经有一个记录集,并且想知道其中有多少行,则必须使用一种fetch*方法来获取数据;并使用计数-就像您建议的那样。
fetch*