我已经上了一个新项目中使用PHP5最近开始工作,并想用自己的PDO类的。问题是,MySQL的PDO驱动程序不支持rowCount时(),这样就没有办法运行一个查询,然后让受影响的行数,或行返回,这是一个相当大的问题,因为就我而言。我想知道是否有人之前已经处理了这一点,你做了什么来解决它。不得不做一个获取()使用fetchall(),以检查是否有任何行产生影响,或者返还似乎是一个黑客对我来说,我宁愿只是做$ stmt-> numRows行()或类似的东西。

有帮助吗?

解决方案

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

$pdo->query("SELECT * FROM users");
$foundRows = $pdo->query("SELECT FOUND_ROWS()")->fetchColumn();

参见: MySQL在FOUND_ROWS文档( )

其他提示

对于那些你谁正在使用MySQL存储过程,这个解决方案是不是真的可行。我建议你做的是有你的存储过程创建两个行集。第一个将包含一行和一列,其中包含的记录的数量。第二个是将用于读取该行数的记录集。

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

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

这个问题是基于几个错误的假设,一个过时的说法。

首先,不要混淆的影响选择行数。 PDO支持前者甚至在09年回来。

由SELECT语句返回的行数语 - 你并不需要这个数字。你拥有的数据就足够了。

和是的,时下rowCount()支持从MySQL选择以及行数。但同样 - 你不需要在平均网络的应用,数量反正

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top