我最近开始了一个使用PHP5的新项目,并希望使用他们的PDO类。问题是,MySQL PDO驱动程序不支持rowCount(),因此无法运行查询,然后获取受影响的行数或返回的行数,这对我来说是一个很大的问题。我想知道以前是否有人处理过这个问题,以及您做了什么来解决这个问题。必须执行fetch()或fetchAll()来检查是否有任何行受到影响或返回,这对我来说就像是一个hack,我宁愿只执行$stmt->numRows()或类似的操作。
发布于 2009-03-18 20:47:30
您可以在原始SELECT查询之后立即发出SELECT FOUND_ROWS()查询,以获取行数。
$pdo->query("SELECT * FROM users");
$foundRows = $pdo->query("SELECT FOUND_ROWS()")->fetchColumn();发布于 2010-03-27 08:36:34
对于使用MySQL存储过程的人来说,这个解决方案并不可行。我建议您做的是让您的存储过程创建两个行集。第一个文件将包含一行和一列,其中包含记录数。第二个将是您将用于获取该数量的行数的记录集。
无限行数可以是具有与没有LIMIT/OFFSET子句的第二个行集完全相同的WHERE子句的SELECT COUNT(*)。
另一个想法是创建一个临时表。使用SELECT语句填充临时表。然后,您可以对第一个行集使用SELECT COUNT(*) FROM tmpTable,对第二个行集使用SELECT * FROM tmpTable。
发布于 2013-12-16 01:10:55
这个问题是基于几个错误的假设和一个过时的陈述。
首先,不要混淆受影响的行数和选定的行数。PDO早在09年就支持前者。
说到SELECT语句返回的行数,你根本不需要这个数字。您拥有的数据就足够了。
是的,现在rowCount()也支持从mysql中选择的行数。但是,再说一次,在一个普通的web应用程序中,无论如何你都不需要这个数字。
https://stackoverflow.com/questions/460010
复制相似问题