小编典典

PDO 的行数

all

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

fetchAll是我不想要的东西,因为我有时可能会处理大型数据集,所以不适合我的使用。

你有什么建议吗?


阅读 66

收藏
2022-06-18

共1个答案

小编典典

$sql = “SELECT count(*) FROM table WHERE foo = ?”;
$result = $con->prepare($sql);
$result->execute([$bar]);
$number_of_rows = $result->fetchColumn();

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

PDO has PDOStatement::rowCount(),这显然在 MySql 中不起作用 多么痛苦。

来自 PDO 文档:

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

编辑:上面的代码示例使用准备好的语句,在许多情况下,这对于计算行数可能是不必要的,所以:

$nRows = $pdo->query('select count(*) from blah')->fetchColumn(); 
echo $nRows;
2022-06-18