4

我必须根据当前系统日期选择记录。如果我对日期值进行硬编码,则查询工作正常,但如果我将其修改为

$date1=date('Y-m-d H:i:s');
$res=$this->db_model->sql("SELECT *
FROM vbl_assignment
INNER JOIN vbl_student_course ON vbl_student_course.course_id = vbl_assignment.course_id
INNER JOIN vbl_course ON vbl_assignment.course_id = vbl_course.course_id
WHERE vbl_student_course.student_id =".$this->session->userdata('loggedinstudent')->student_id." AND vbl_assignment.accept_until_date > ".$date1);  

查询失败。知道这里穿了什么。

4

5 回答 5

2
$date1=date('Y-m-d H:i:s');

$date1 是一个字符串。您需要将 $date1 放在查询中的 '' 即 '$date1' 中。

希望它对你有用。

于 2013-07-11T06:22:29.950 回答
2

当您使用 codeigniter 时,请尝试在查询中使用活动记录,这样会更好、更快、更安全。要将日期与活动记录中的当前日期进行比较,请输入以下代码:

$this->db->where('date', 'CURDATE()', FALSE);
于 2013-07-11T06:28:06.417 回答
1

尝试:

$res=$this->db->query("SELECT *
FROM vbl_assignment
INNER JOIN vbl_student_course ON vbl_student_course.course_id = vbl_assignment.course_id
INNER JOIN vbl_course ON vbl_assignment.course_id = vbl_course.course_id
WHERE vbl_student_course.student_id =".$this->session->userdata('loggedinstudent')->student_id." AND vbl_assignment.accept_until_date > '".$date1."'");
于 2013-07-11T06:18:53.983 回答
0

您需要 escape $date1,类似于'$date1'查询。您在数据库中使用什么格式的日期?还有更好的解决方案使用 AR:

    $this->db->join('vbl_student_course', 
         'vbl_student_course.course_id = vbl_assignment.course_id');
    $this->db->join('vbl_course', 
         'vbl_assignment.course_id = vbl_course.course_id');
    $this->db->where(array(
        'vbl_student_course.student_id' => $this->session->
             userdata('loggedinstudent')->student_id,
        'vbl_assignment.accept_until_date >' => $date1
    ));
于 2013-07-11T06:20:58.357 回答
0
$this->db->select();
        $this->db->from('post_job');
        $this->db->where("last_date >", 'CURDATE()', FALSE);
        $query=$this->db->get();        
        return $query->result();
于 2014-07-14T13:06:46.783 回答