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');