我正在尝试执行查询: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;
}
Try This:
$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;
你的错误信息告诉你$query不是一个对象。你不能在非对象上调用成员函数!
你的"join"方法没有返回一个对象
试着把print_r($query)
或var_dump($query)
后设置$query,找出确切的是什么
像这样试试你的函数
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中它是空的。您需要以数组格式返回数据,因此使用result_array。详情请看这里;使用这个方法,你不需要循环遍历对象。它会给你一个现成的数组。
在控制器中可以检查结果是null还是array