php pdo - 检索结果和行数 - 便携式解决方案

时间:2015-12-31 18:46:27

标签: php mysql pdo

我目前正在查询数据库两次以检索我的结果集的行数,并且我在返回的行上运行循环之前的结果集如下:

$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()并不适用于所有实例。

2 个答案:

答案 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保留了对返回的行数的引用。