首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Php5的PDO rowCount MySQL问题的解决方法

问Php5的PDO rowCount MySQL问题的解决方法
EN

Stack Overflow用户
提问于 2009-01-20 03:16:00
回答 3查看 12.8K关注 0票数 15

我最近开始了一个使用PHP5的新项目,并希望使用他们的PDO类。问题是,MySQL PDO驱动程序不支持rowCount(),因此无法运行查询,然后获取受影响的行数或返回的行数,这对我来说是一个很大的问题。我想知道以前是否有人处理过这个问题,以及您做了什么来解决这个问题。必须执行fetch()或fetchAll()来检查是否有任何行受到影响或返回,这对我来说就像是一个hack,我宁愿只执行$stmt->numRows()或类似的操作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-18 20:47:30

您可以在原始SELECT查询之后立即发出SELECT FOUND_ROWS()查询,以获取行数。

代码语言:javascript
复制
$pdo->query("SELECT * FROM users");
$foundRows = $pdo->query("SELECT FOUND_ROWS()")->fetchColumn();

另请参阅:MySQL Docs on FOUND_ROWS()

票数 26
EN

Stack Overflow用户

发布于 2010-03-27 08:36:34

对于使用MySQL存储过程的人来说,这个解决方案并不可行。我建议您做的是让您的存储过程创建两个行集。第一个文件将包含一行和一列,其中包含记录数。第二个将是您将用于获取该数量的行数的记录集。

无限行数可以是具有与没有LIMIT/OFFSET子句的第二个行集完全相同的WHERE子句的SELECT COUNT(*)。

另一个想法是创建一个临时表。使用SELECT语句填充临时表。然后,您可以对第一个行集使用SELECT COUNT(*) FROM tmpTable,对第二个行集使用SELECT * FROM tmpTable。

票数 1
EN

Stack Overflow用户

发布于 2013-12-16 01:10:55

这个问题是基于几个错误的假设和一个过时的陈述。

首先,不要混淆受影响的行数和选定的行数。PDO早在09年就支持前者。

说到SELECT语句返回的行数,你根本不需要这个数字。您拥有的数据就足够了。

是的,现在rowCount()也支持从mysql中选择的行数。但是,再说一次,在一个普通的web应用程序中,无论如何你都不需要这个数字。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/460010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档