使用计数给出错误的行数

时间:2018-09-10 07:11:26

标签: php sql

在我使用此代码计数行之前

echo $db_handle->numRows("SELECT * FROM orders WHERE DATE(reattemptdate) = CURDATE()");

比我发现它会影响性能,而不是我尝试使用下面的代码,但是它没有给出正确的行数,我在下面的代码中做了什么错?

$sqldelivery = "SELECT COUNT(*) as count FROM orders  WHERE DATE(reattemptdate) = CURDATE()";
$resultdeliverys = $db_handle->runSelectQuery($sqldelivery); 
$numrowsresultdelivery =count($resultdeliverys);         
echo $numrowsresultdelivery;

数据库连接代码

function numRows($query) {
        $result  = mysqli_query($this->conn,$query);
        $rowcount = mysqli_num_rows($result);
        return $rowcount;
    }

2 个答案:

答案 0 :(得分:3)

在第二个代码中,查询将始终返回1行-以count列为行数的行,因此...

$numrowsresultdelivery =count($resultdeliverys);

可能永远为1,您需要类似...

$numrowsresultdelivery =$resultdeliverys[0]['count'];

从结果的第一行提取count字段。 (请注意,我不知道这是否是正确的表示法,但这是从结果中获取字段而不是结果数的原则。)

答案 1 :(得分:2)

您必须已经通过$resultdeliverys->count获得了计数数字。

$sqldelivery = "SELECT COUNT(*) as count FROM orders  WHERE DATE(reattemptdate) = CURDATE()";
$resultdeliverys = $db_handle->runSelectQuery($sqldelivery); 

// Try this to know if it's returning array or object
var_dump($resultdeliverys);