问题:如何在codeigniter中对COUNT查询执行num_rows()?

这有效:

        $sql = "SELECT id
                FROM `users`
                WHERE `account_status` = '" . $i . "'"; 
        $query = $this->db->query($sql);
        var_dump($query->num_rows());

但这不会:

        $sql = "SELECT COUNT(*)
                FROM `users`
                WHERE `account_status` = '" . $i . "'"; 
        $query = $this->db->query($sql);
        var_dump($query->num_rows());

如何对 COUNT(*) 查询执行 num_rows?第二种方式是否有更好的性能?

解答

执行COUNT(*)只会给你一个包含行数而不是结果本身的单数行。

要访问COUNT(*)你需要做

$result = $query->row_array();
$count = $result['COUNT(*)'];

第二个选项执行得更好,因为它不需要将数据集返回给 PHP,而只是一个计数,因此更加优化。

Logo

华为、百度、京东云现已入驻,来创建你的专属开发者社区吧!

更多推荐