我正在执行下面代码的输出。但我少了一个数据。我下面的代码是错的吗?
相同的查询与正确的变量i执行到我的sql查询浏览器,我得到6个结果。但是从我的*下面的代码我只得到5个结果*。
这种魔力背后的原因是什么?
public function get_all_book_list_ByCreatedDateDSC($limit, $start,$sortsesval)
{
$id=0;
$this->load->helper('date');
$datestring = "%Y-%m-%d: %d:%h:%i";
$time = time();
$today=mdate($datestring, $time);
$pasttime=date("Y-m-d H:i:s", strtotime("-7 days"));
printf('$today='.$today); printf('$pasttime='.$pasttime);
$this->load->database();
$this->db->limit($limit, $start);
$this->db->select('*');
$query =$this->db->join('coverdetails', 'coverdetails.cover_id = bookdetails.cover_id')->where('quantity >', $id)->where("bookdetails.created_date BETWEEN '$pasttime' AND '$today'")->get('bookdetails');
print_r('no or rows='.$query->num_rows() );//output no or rows=5
if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
$data[] = $row;
}
return $data;
}
return false;
}
请帮我解决我的问题
像这样修改函数代码
public function get_all_book_list_ByCreatedDateDSC($limit, $start,$sortsesval)
{
$this->load->helper('date');
$this->load->database();
$id = 0;
$datestring = "%Y-%m-%d: %d:%h:%i";
$time = time();
$today = mdate($datestring, $time);
$pasttime = date("Y-m-d H:i:s", strtotime("-7 days"));
return $this->db
->select('*');
->join('coverdetails', 'coverdetails.cover_id = bookdetails.cover_id')
->where('quantity >', $id)
->where("bookdetails.created_date BETWEEN '$pasttime' AND '$today'")
->limit($limit, $start)
->get('bookdetails');
->result_array();
}
同样用于测试,使用$this->db->last_query()
并复制查询,然后将其粘贴到PHP MyAdmin中进行测试。其他可能的是$limit
、$offset
和Between
,它们可能导致记录数量的变化。