有很多相互矛盾的说法。在PHP中使用PDO获得行数的最佳方法是什么?在使用PDO之前,我只是简单地使用了mysql_num_rows。
fetchAll是我不想要的东西,因为我有时可能要处理大型数据集,所以不适合我使用。
你有什么建议吗?
有很多相互矛盾的说法。在PHP中使用PDO获得行数的最佳方法是什么?在使用PDO之前,我只是简单地使用了mysql_num_rows。
fetchAll是我不想要的东西,因为我有时可能要处理大型数据集,所以不适合我使用。
你有什么建议吗?
当前回答
要在查询中使用变量,必须使用bindValue()或bindParam()。并且不要将变量与"连在一起。$variable。”
$statement = "SELECT count(account_id) FROM account
WHERE email = ? AND is_email_confirmed;";
$preparedStatement = $this->postgreSqlHandler->prepare($statement);
$preparedStatement->bindValue(1, $account->getEmail());
$preparedStatement->execute();
$numberRows= $preparedStatement->fetchColumn();
GL
其他回答
最简单的方法,只有两行,
$sql = $db->query("SELECT COUNT(*) FROM tablename WHERE statement='condition'");
echo $sql->fetchColumn();
快速一行程序返回第一个条目。这对于非常基本的查询是很好的。
<?php
$count = current($db->query("select count(*) from table")->fetch());
?>
参考
看看这个链接: http://php.net/manual/en/pdostatement.rowcount.php 不建议在SELECT语句中使用rowCount() !
$sql = "SELECT count(*) FROM `table` WHERE foo = ?";
$result = $con->prepare($sql);
$result->execute([$bar]);
$number_of_rows = $result->fetchColumn();
这不是最优雅的方式,而且它涉及到一个额外的查询。
PDO有PDOStatement::rowCount(),这显然在MySql中不起作用。真痛苦。
来自PDO文档:
对于大多数数据库, PDOStatement::rowCount()没有 返回受影响的行数 SELECT语句。相反,使用 PDO::query()发出SELECT COUNT(*)语句 谓词作为您想要的SELECT 语句,然后使用 PDOStatement: fetchColumn () 检索需要的行数 被归还。您的应用程序可以 请执行正确的操作。
编辑:上面的代码示例使用了一个预处理语句,在许多情况下,这对于计数行的目的可能是不必要的,因此:
$nRows = $pdo->query('select count(*) from blah')->fetchColumn();
echo $nRows;
回答这个问题是因为我现在知道了这个问题,也许它会有用。
请记住,您不能获取两次结果。您必须将获取结果保存到数组中,按count($array)获取行计数,并使用foreach输出结果。 例如:
$query = "your_query_here";
$STH = $DBH->prepare($query);
$STH->execute();
$rows = $STH->fetchAll();
//all your results is in $rows array
$STH->setFetchMode(PDO::FETCH_ASSOC);
if (count($rows) > 0) {
foreach ($rows as $row) {
//output your rows
}
}