无法执行笨查询

问题描述:

我试图执行类似查询: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; 

}

试试这个:

$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; 
+0

我试过你的代码。但仍然是同样的错误。如果我将'created_date'更改为'book_title',他们就会得到输出。在我的表中'created_date'是datetime。并且在所有行中,我为'created_date'插入了值'2013-03-02 02:12:36'。是因为created_date错误吗?请解释 – 2013-03-09 09:22:27

+0

在D:\ xampp \ htd – 2013-03-09 09:49:17

+0

中的非对象上调用成员函数num_rows()我认为这两个表具有相同的字段名称created_date,因此不是这样:$ this-> db-> order_by('created_date' ,'desc');使用这个: $ this-> db-> order_by('bookdetails.created_date','desc'); – 2013-03-09 09:55:43

你的错误信息是告诉你,$查询是不是一个对象。您无法在非对象上调用成员函数!

你的“连接”方法没有返回一个对象。

尝试在您设置$查询后放入print_r($query)var_dump($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。您需要以数组格式返回数据,以便使用result_array。详情请参阅here;使用这个你不需要遍历对象。它会给你现成的数组。

在控制器中,您可以检查结果是否为空或数组。

+0

我想你的代码。但仍然是同样的错误。如果我将'created_date'更改为'book_title',他们就会得到输出。在我的表中'created_date'是datetime。并且在所有行中,我为'created_date'插入了值'2013-03-02 02:12:36'。是因为created_date错误吗?请解释 – 2013-03-09 09:21:46

+0

@ user2134654你现在得到了什么错误? – 2013-03-09 09:25:12

+0

同样的错误,因为我在我的问题中指定'调用成员函数num_rows()在一个非对象in.' – 2013-03-09 09:32:42