Php 无法执行codeigniter查询

Php 无法执行codeigniter查询,php,mysql,codeigniter,Php,Mysql,Codeigniter,我正在尝试执行如下查询:select*from bookdetails where quantity>0 ORDER BY created\u date DESC 但我遇到了一个错误,比如在…中的非对象上调用成员函数num_rows() 请帮我解决这个问题 public function get_all_book_list_ByCreatedDateDSC($limit, $start,$sortsesval) { $this->load->database();

我正在尝试执行如下查询:
select*from bookdetails where quantity>0 ORDER BY created\u date DESC


但我遇到了一个错误,比如在…中的非对象上调用成员函数num_rows() 请帮我解决这个问题

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;

}

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

您的“join”方法没有返回对象


设置$query后,请尝试放置
print\r($query)
var\u 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(未找到任何记录)时,您将无法访问该对象,因为$query中该对象为null。您需要以数组格式返回数据,因此请使用结果数组。有关详细信息,请参见;使用它,您不需要在对象中循环。它将为您提供现成的阵列

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

尝试以下操作:

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

我试过你的密码。但还是一样的错误。如果我将
created\u date
更改为
book\u title
它们,我将获得输出。在我的表中,创建的日期是日期时间。在所有行中,我都为
创建日期插入了值
2013-03-02 02:12:36
。这个错误是因为创建日期吗?请解释我在问题
中对中的非对象调用成员函数num_rows()时指定的错误。
但我的答案中没有num_rows()。为什么会出现此错误?抱歉的错误:
在中的非对象上调用成员函数result_array()。您确定要在模型中编写代码吗?我尝试了您的代码。但还是一样的错误。如果我将
created\u date
更改为
book\u title
它们,我将获得输出。在我的表中,创建的日期是日期时间。在所有行中,我都为
创建日期插入了值
2013-03-02 02:12:36
。这个错误是因为创建日期吗?请解释在D:\xampp\hti中的非对象上调用成员函数num_rows(),我认为这两个表具有相同的字段名created_date,而不是:$this->db->order_by('created_date','desc');使用:$this->db->order_by('bookdetails.created_date','desc');