Php 如何解决这个问题';对布尔值';错误?

Php 如何解决这个问题';对布尔值';错误?,php,codeigniter-3,Php,Codeigniter 3,我想从mysql中获取一些数据。我使用的是codeigniter模型和控制器 CI_model.php: public function getLastSale($id){ $q = $this->db->query("SELECT * from sma_sales desc limit 1 where customer_id = '$id' "); $result = $q->row(); $res = array();

我想从mysql中获取一些数据。我使用的是codeigniter模型和控制器

CI_model.php:

     public function getLastSale($id){


     $q = $this->db->query("SELECT * from sma_sales  desc limit 1 where customer_id = '$id' ");


    $result = $q->row();


    $res = array();
    $res['id'] = $result->id;
    $res['paid'] = $result->paid;


    return $res; 


}
CI_controller.php:

    $getLastData = $this->pos_model->getLastSale($customer_id);

    $sid = $getLastData['id'];

    $prepaid = $getLastData['paid'];
但这一错误表明:

    An uncaught Exception was encountered
    Type: Error

    Message: Call to a member function row() on boolean

我是codeigniter的初学者。我做错了什么?

我认为问题在于查询:

SELECT * from sma_sales  desc limit 1 where customer_id = '$id'
试着这样做:

SELECT * from sma_sales where customer_id = '$id' order by `sales_date` desc limit 1
您需要使用
orderby
子句进行排序

另外,确保在将
$id
包含在查询中之前将其转义。看一看


另一个建议是,您可以检查是否设置了
$result
。因为如果出现错误,它将返回NULL。请阅读更多信息。

您收到的错误是因为您的
$result=$q->row()
处理的是
$db->query(…)
调用返回的错误

对布尔函数的方法的调用

我相信您的原始SQL中关于此部分的内容有错误。
…sma\u sales desc limit…

SMAU销售
desc
之间需要某种
ORDER BY
子句

您还应该检查返回的查询是否有效

if($q !== false)
{
    $result = $q->row();
}
else
{
    return false;
}
或者类似的