我目前正在查询数据库两次以检索我的结果集的行数,并且我在返回的行上运行循环之前的结果集如下:
$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()
并不适用于所有实例。
答案 0 :(得分:1)
您可以使用rowCount()
方法获取行数,如下所示:
$result = $db->query("SELECT * FROM mytable");
$count = $result->rowCount();
echo $count;
while($row = $result->fetch(PDO::FETCH_ASSOC)){
// your code
}
以下是参考资料:
<强>编辑:强>
如果您不想使用rowCount()
方法,这是另一种方法。
$result = $db->query("SELECT * FROM mytable");
$result_set = $result->fetchAll();
$count = count($result_set);
echo $count;
while($row = array_shift($result_set)){
// your code
}
以下是相关参考资料:
答案 1 :(得分:0)
在您的情况下,没有理由执行COUNT(*)
查询。您可以只计算返回的行数。
$count = $result->fetchAll();
现在$count
保留了对返回的行数的引用。