PHP PDO - Num Rows

Ian*_*Ian 13 php mysql pdo

PDO显然无法计算从select查询返回的行数(mysqli具有num_rows变量).

有没有办法做到这一点,没有使用count($results->fetchAll())

Pas*_*TIN 12

根据手册,有一种PDOStatement->rowCount方法; 但不应该使用(引用):

对于大多数数据库, PDOStatement::rowCount() 不返回受SELECT语句影响的行数.
相反,用于 PDO::query() 发出SELECT COUNT(*)与预期语句具有相同谓词的SELECT 语句,然后用于 PDOStatement::fetchColumn()检索将返回的行数.
然后,您的应用程序可以执行正确的操作


如果你已经有一个记录集,并想知道其中有多少行,你将不得不使用其中一种fetch*方法获取数据; 并使用计数 - 就像你建议的那样.

  • 是的,因此我的问题.PDO*怎么可能没有num_rows函数?那里的每个其他数据库连接器都有它. (8认同)
  • 为了计算而抓取所有数据,然后扔掉那个阵列是非常浪费的,特别是如果它是一个大阵列.. (6认同)
  • FWIW,没有连接器可以为您提供准确的行数*而无需获取*.即使在MySQL C API调用`mysql_num_rows()`中,在获取所有行之前也无法获得计数.请参阅http://dev.mysql.com/doc/refman/5.1/en/mysql-num-rows.html (5认同)
  • 这就是为什么我说"如果你已经有一个记录集"*; 如果你不这样做,并想知道你的查询可以提供多少行,当不使用LIMIT子句时,我会说另一个带有count()的查询是你正在寻找的解决方案? (2认同)