【发布时间】:2016-04-05 15:58:17
【问题描述】:
我目前正在查询数据库两次以检索我的结果集的行数,以及在我对返回的行运行循环之前的结果集,如下所示:
$result = $db->query("SELECT COUNT(*) FROM mytable");
$result1 = $db->query("SELECT * FROM mytable");
$count = $result->fetchColumn();
if($count == $value){
while($row = $result1->fetch(PDO::FETCH_ASSOC)){
//execute code
}
} elseif($count == $value2) {
//execute other code
}
我刚刚转换为 PDO,所以也不知道。用于使用mysql_num_rows 的代码。我正在寻找一种无需两次查询数据库就可以做到这一点的方法,我一直在使用的这个解决方案用于小目的,但如果它被扩展,显然对数据库来说是不必要的负载。非常感谢
编辑:我转向 PDO 的原因是它的可移植性功能,因此 rowCount() 并不适合所有情况。
【问题讨论】:
-
阅读您使用的工具的文档总是一个好主意。例如,它会向您显示可用方法的列表。这里它向你展示了这个:php.net/manual/en/pdostatement.rowcount.php
-
rowCount可能就是您要找的。span> -
@Script47
rowCount不会在SELECT语句上执行。 -
@Ohgodwhy 为什么我使用它时它工作得很好。 如果关联的 PDOStatement 执行的最后一条 SQL 语句是 SELECT 语句,则某些数据库可能会返回该语句返回的行数。 尽管它确实带有以下警告:但是,这不能保证所有数据库的行为,并且不应依赖于可移植应用程序。 但是,它确实对我有用。
-
rowCount()在这种情况下使用 mysql 对我有用,但是鉴于文档中的警告,以及我转换为PDO的原因是它可以与大多数数据库一起移植,它是不是一个长期的解决方案。