我正在尝试执行以下查询:select*from bookdetails where quantity>0 ORDER BY created_date DESC
但我收到Call to a member function num_rows() on a non-object in...
这样的错误
请帮我解决这个问题。
public function get_all_book_list_ByCreatedDateDSC($limit, $start,$sortsesval)
{
$this->load->database();
$this->db->limit($limit, $start);
$query=$this->db->join('coverdetails', 'coverdetails.cover_id = bookdetails.cover_id')->order_by('created_date', 'DESC')->get_where('bookdetails',array('quantity >', '0'));
if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
$data[] = $row;
}
return $data;
}
return false;
}
答案 0 :(得分:0)
您的错误消息告诉您$ query不是对象。你不能在非对象上调用成员函数!
您的“加入”方法未返回对象。
设置$ query后尝试设置print_r($query)
或var_dump($query)
,以确切了解它是什么。
答案 1 :(得分:0)
尝试这样的功能
public function get_all_book_list_ByCreatedDateDSC($limit, $start,$sortsesval)
{
$this->load->database();
return $this->db
->join('coverdetails', 'coverdetails.cover_id = bookdetails.cover_id')
->order_by('created_date', 'DESC')
->limit($limit, $start)
->get_where('bookdetails',array('quantity >', '0'))
->result_array();
}
当您的查询返回null(找不到记录)时,您将无法访问该对象,因为在$ query中它为null。您需要以数组格式返回数据,因此请使用result_array。有关详细信息,请参阅here;使用它你不需要循环对象。它会为你提供现成的阵列。
在控制器中,您可以检查结果是null还是数组。
答案 2 :(得分:0)
试试这个:
$this->db->select('*');
$this->db->where('quantity >', $id);
$this->db->join('coverdetails', 'coverdetails.cover_id = bookdetails.cover_id');
$this->db->order_by('bookdetails.created_date', 'desc');
$this->db->limit($limit, $start);
$query = $this->db->get('bookdetails');
if($query -> num_rows() == 1)
return $query->result_array();
else
return false;