在bool上调用成员函数num_rows()

时间:2019-08-24 17:09:11

标签: php mysql codeigniter model codeigniter-3

访问页面时发生错误,并在页面上显示。显示的错误描述如下:

An uncaught Exception was encountered

Type: Error

Message: Call to a member function num_rows() on bool

Filename: localhost/app/models/admin/Reports_model.php

错误中引用的方法如下:

public function getTotalReturnSales($start, $end, $warehouse_id = null)
    {
        $this->db->select('count(id) as total, sum(COALESCE(grand_total, 0)) as total_amount, SUM(COALESCE(paid, 0)) as paid, SUM(COALESCE(total_tax, 0)) as tax', false)
            ->where('date BETWEEN ' . $start . ' and ' . $end);
        if ($warehouse_id) {
            $this->db->where('warehouse_id', $warehouse_id);
        }
        $q = $this->db->get('returns');
        if ($q->num_rows() > 0) {
            return $q->row();
        }
        return false;
    }

怎么会引起这个错误?

1 个答案:

答案 0 :(得分:0)

如果查询失败,

$this->db->get()将返回false。如您所知,false是布尔值,没有“方法”。如果运行以下

$q = $this->db->get('returns');
var_dump($q)

几乎可以肯定地说$q是一个布尔值,为false。

查询失败的最常见原因是错误的sql语句语法。查看查询生成器创建的查询语句的一种方法是,将以下两行放在$q = $this->db->get('returns');

之前
$sql = $this->db->get_compiled_select('returns', false); 
var_dump($sql);

您也许可以查看导致问题的原因。

注意:不返回任何行的查询并非失败。