PDO显然无法计算从select查询返回的行数(mysqli
有num_rows
变量)。PHP PDO - Num Rows
有没有办法做到这一点,短缺使用count($results->fetchAll())
?
PDO显然无法计算从select查询返回的行数(mysqli
有num_rows
变量)。PHP PDO - Num Rows
有没有办法做到这一点,短缺使用count($results->fetchAll())
?
根据手册,有一个PDOStatement->rowCount
方法;但它不应该被用来(引用):
对于大多数数据库,
PDOStatement::rowCount()
确实受到 一个SELECT
语句行不 回数。
相反,使用PDO::query()
发出SELECT COUNT(*)
语句相同 谓词为您的预期SELECT
语句,然后使用PDOStatement::fetchColumn()
到 检索将 返回的行数。
然后您的应用程序可以 执行正确的操作。
如果你已经有一个记录,想知道有多少行是它,你就必须获取数据,使用的fetch*
方法之一;并使用计数 - 就像你所建议的那样。
另一个选项可能更接近num_rows
变量mysqli
和相应的C API函数mysql_num_rows()
。是使用MySQL函数FOUND_ROWS()
返回相同的信息,而不必再次计算结果中的所有记录。
例子:
$pdoDB->query('SELECT FOUND_ROWS()')->fetchColumn()
这个答案现在没有意义,因为你可以有规律的计数 – 2014-04-04 08:10:32
虽然PDO显然有各种手段来算从MySQL的选择查询返回的行数,更重要的是,有没有对这样的功能使用第一个地方。
每当您有一个想法将rowCount()用于SELECT查询时,它可能是多余的,甚至是有害的。见PDO rowCount():万一
你甚至读过这个问题的接受答案吗?根据PDO的文档:“如果由关联的PDOStatement执行的最后一条SQL语句是SELECT语句,某些数据库可能会返回该语句返回的行数。但是,对于所有数据库,并不能保证这种行为,因此不应该依赖便携式应用程序“。 – Ian 2014-04-05 14:05:36
那么,如果您要求使用便携式应用程序,那么不要用mysql标记您的问题。 – 2014-04-05 14:11:22
我该如何去计算呢?我以后在HTML文档中使用PHP MySQL查询来显示数据库中的数据,但是我想要显示计数的元素来自提取和显示数据之前? – Anthony 2017-10-22 22:21:10
可能的重复http://stackoverflow.com/questions/460010/work-around-for-php5s-pdo-rowcount-mysql-issue - 这个问题和你的一样。接受的答案就是你想要的。 – zombat 2010-04-23 17:34:31
我看到了这个问题,但答案很糟糕。对数据库运行第二个查询以查看现在存储在记录集中的行数是非常愚蠢的。 – Ian 2010-04-23 18:57:15