PDO rowCount 仅返回一个 [重复]
Posted
技术标签:
【中文标题】PDO rowCount 仅返回一个 [重复]【英文标题】:PDO rowCount only returning one [duplicate] 【发布时间】:2017-03-14 07:24:04 【问题描述】:我有一个 SELECT 查询,如下所示:
$stmnt = $conn->prepare("SELECT post_title, posts_cat FROM posts WHERE posts_cat=:posts_cat");
$stmnt->execute(array(':posts_cat' => $cat_id));
$post_info = $stmnt->fetch();
$count = $stmnt->rowCount();
如果没有帖子,则显示无,但如果有一个或多个,则仅显示一个。
谁能告诉我这是为什么?
【问题讨论】:
使用 PDO 的fetchAll()
函数将所有行提取到数组中
php.net/manual/en/… 中的示例 2
【参考方案1】:
当然你得到了正确的返回行数。 1 表示只找到一行。如果您想找到更多行,请向数据库中添加更多行以匹配条件。
您是否需要这样的功能 - 是另一个问题,已经回答in this post
【讨论】:
【参考方案2】:请不要在选择查询中使用rowCount()
对 count()
使用不同的查询来计算行数
$sql = "SELECT count(*) FROM `posts` WHERE posts_cat = :posts_cat";
$stmnt = $conn->prepare($sql);
$stmnt->execute(array(':posts_cat' => $cat_id));
$count = $stmnt->fetchColumn();
【讨论】:
错误的答案和绝对错误的投票。 @Rajesh Patel 非常感谢。我有一个问题 whiteout using$stmnt->fetchAll();
cant you directly use $stmnt->rowCount();
like in mysqli num_rows
?
感谢@HankyPanky,非常感谢我不知道
不客气!如果您编辑答案以反映我将能够取消我的反对票。目前我不能,因为它被锁定了【参考方案3】:
PDOStatement::rowCount() 返回受相应 PDOStatement 对象执行的最后一个 DELETE、INSERT 或 UPDATE 语句影响的行数。
rowCount() 不适用于 SELECT
查询,请使用单独的 COUNT
查询或获取数组中的所有行和 count
其大小
【讨论】:
感谢您的回答。将 SELECT COUNT 与 fetchColumn 一起使用是否正确? 是的,这样做很好 好的,非常感谢。我只是从 MySQLi 迁移到 PDO。 那个讨厌的谣言再次 你可能想取消它,因为这篇论文没有。 ***.com/a/16776839/1570534以上是关于PDO rowCount 仅返回一个 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
PHP PDO Update语句总是返回0行受影响的rowCount()
PHP PDO rowCount 在 SELECT 语句上返回 -1