一尘不染

PDO的行数

mysql

周围有许多矛盾的说法。在PHP中使用PDO进行行计数的最佳方法是什么?在使用PDO之前,我只是简单地使用mysql_num_rows

fetchAll 是我不想要的东西,因为有时我可能要处理大型数据集,因此对我的使用不利。

你有什么建议吗?


阅读 340

收藏
2020-05-17

共1个答案

一尘不染

$sql = "SELECT count(*) FROM `table` WHERE foo = bar"; 
$result = $con->prepare($sql); 
$result->execute(); 
$number_of_rows = $result->fetchColumn();

这不是最优雅的方式,而且还涉及额外的查询。

PDO有PDOStatement::rowCount(),这显然也 没有 在MySQL的工作。真痛苦

从PDO文档中:

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

编辑:上面的代码示例使用一个准备好的语句,在许多情况下,出于计数行的目的,可能是不必要的,因此:

$nRows = $pdo->query('select count(*) from blah')->fetchColumn(); 
echo $nRows;
2020-05-17