为啥这种使用 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()
获取该号码
Array
一词判断)。
嗯,在您写完答案后看到问题的基本部分被编辑,这总是令人惊奇。
如果计数为 0 - 所选类别下没有行,或者任何 另一个类似错字的错误
无论如何,您不应该选择所有表数据来仅获取计数
【讨论】:
谢谢,没有错别字。回显时显示0
不是数组,我的错。
.4 你的权利,我忘了给$cat_id
赋值,谢谢
fetchall
返回一个包含所有结果行和count()
的数组,计算数组中的所有元素......那为什么它不起作用?以上是关于为啥这种使用 PDO 计算 Mysql 行数的方法不起作用? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
为啥这种“嵌套连接”适用于 PDO 而不适用于 MySql cli?