0

我正在尝试执行如下查询: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;

}

4

3 回答 3

0

您的错误消息告诉您 $query 不是对象。您不能在非对象上调用成员函数!

您的“加入”方法没有返回对象。

尝试在设置 $query 之后放置print_r($query)var_dump($query),以找出它到底是什么。

于 2013-03-09T08:48:06.990 回答
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。详情见这里;使用它你不需要遍历对象。它会给你现成的数组。

在控制器中,您可以检查结果是 null 还是数组。

于 2013-03-09T08:48:35.680 回答
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;
于 2013-03-09T09:00:01.487 回答