如何解决此“在布尔值上调用成员函数row()”错误?

时间:2019-02-10 09:08:22

标签: 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();
    $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的初学者。我在做什么错了?

2 个答案:

答案 0 :(得分:1)

您收到的错误是因为您的Person正在执行person2.WorkingHours.Add(workingHour1); person1.WorkingHours.Add(workingHour2); 调用中的FALSE返回。

在布尔值上调用方法

我相信您的原始SQL在$result = $q->row()部分附近有错误

$db->query(...)...sma_sales desc limit...之间需要某种ORDER BY子句。

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

sma_sales

或类似的东西

答案 1 :(得分:0)

我认为问题出在查询上

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

您需要使用ORDER BY子句进行排序。

此外,在将$id包含在查询中之前,请确保对其进行转义。看看this

另一个建议是,您可以检查是否设置了$result。因为如果发生错误,它将返回NULL。进一步了解here