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 がオブジェクトではないことを示しています。オブジェクト以外でメンバー関数を呼び出すことはできません!

「結合」メソッドがオブジェクトを返していません。

print_r($query)$query を設定した後にorvar_dump($query)を入力して、それが何であるかを正確に調べてください。

于 2013-03-09T08:48:06.990 に答える
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 に答える
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 に答える