为啥这种使用 PDO 计算 Mysql 行数的方法不起作用? [关闭]

Posted

技术标签:

【中文标题】为啥这种使用 PDO 计算 Mysql 行数的方法不起作用? [关闭]【英文标题】:Why is this method of counting Mysql rows using PDO not working? [closed]为什么这种使用 PDO 计算 Mysql 行数的方法不起作用? [关闭] 【发布时间】:2013-03-29 11:30:25 【问题描述】:

我正在尝试使用 PDO 计算从 SELECT 语句返回的行数。

$stmt = $dbh->prepare("SELECT * FROM posts WHERE cat_id= ?");
$stmt->bindParam(1,$cat_id);
$stmt->execute();

$rows = $stmt->fetchAll();
$count_posts = count($rows);
return $count_posts;

我使用fetchAll() 然后count() 来计数,但它不起作用。当我回显它时,它会回显0。我以为数组是$rows,那么$count_posts 就是那个数组的计数?

echo $count_posts = count_cat_posts($cat_id);

谢谢

【问题讨论】:

抱歉,这是基本调试。你不能只用echo 一个数组来检查它。你需要一个循环,或者print_r(),或者var_dump()。此外,如何验证prepare()bindParam()execute() 是否成功,否则如何查看错误消息? 我以为我是先对数组进行计数,然后再回显计数? @Amir 在这种情况下我没有使用 rowCount(),但谢谢 @crm..抱歉发帖是我的错误 【参考方案1】:
    此方法应该从不用于计算数据库中的行数。如果您以后需要使用所有这些行,并且只想先计算它们,那也没关系。但永远不要只用它来计数。

    必须选择他们需要的数据,仅此而已。如果您需要行数 - 然后选择行数,

    SELECT  count(1) FROM posts WHERE cat_id= ?
    

    然后使用fetchColumn()获取该号码

    至于代码中的特定错误 - 这似乎只是一个愚蠢的错字。很可能您不是在回显 $count_posts 而是 $rows (从您提到的 Array 一词判断)。 嗯,在您写完答案后看到问题的基本部分被编辑,这总是令人惊奇。 如果计数为 0 - 所选类别下没有行,或者任何 另一个类似错字的错误 无论如何,您不应该选择所有表数据来仅获取计数

【讨论】:

谢谢,没有错别字。回显时显示0 不是数组,我的错。 .4 你的权利,我忘了给$cat_id赋值,谢谢 fetchall 返回一个包含所有结果行和count() 的数组,计算数组中的所有元素......那为什么它不起作用?

以上是关于为啥这种使用 PDO 计算 Mysql 行数的方法不起作用? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何计算 MySQL 表中的行数(PHP PDO)

为啥这种“嵌套连接”适用于 PDO 而不适用于 MySql cli?

正确计算确切编号的方法。使用 PHP PDO 的 SQL 中的行数

使用python计算文件中删除行数的最佳方法

计算 Redshift 表中存在的重复行数的更快方法是啥

比 wc -l 更快、更精确地计算行数的方法