无法从我的codeigniter查询代码中获取正确的输出

时间:2013-03-09 14:00:53

标签: php mysql codeigniter

我正在执行以下代码的输出。但我得到的数据较少。我的下面的代码是错的吗? 相同的查询与正确的变量我执行我的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;
   }

请帮我解决问题。

1 个答案:

答案 0 :(得分:1)

像这样改变你的功能代码

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,可能会导致记录数量发生变化。