Codeigniter SQL查询 - DATE_ADD

时间:2012-06-02 12:13:07

标签: mysql codeigniter

我正在使用CodeIgniter(http://codeigniter.com/)并遇到查询问题:

select *
from mb_login_attempts
where ip_adress_hash = ?
and DATE_ADD(attempt_date,INTERVAL 30 MINUTE) > NOW()

我想使用以下语法:

$this->db->where('ip_adress_hash', $this->encrypt->sha1($this->input->ip_address()));
$this->db->where('DATE_ADD(attempt_date,INTERVAL 30 MINUTE) >','NOW()',TRUE);

if($this->db->count_all_results('mb_login_attempts') >= 3) {

 return true;    

}

如果我使用此代码:

$sql = "select *
from mb_login_attempts
where ip_adress_hash = ?
and DATE_ADD(attempt_date,INTERVAL 30 MINUTE) > NOW()";

$val = $this->db->query($sql,$this->encrypt->sha1($this->input->ip_address()));

if($val->num_rows() >= 3) {

 return true;    

}

有没有人知道我如何让第一个代码正常工作? 编辑:我已经将一些代码更改为评论 - 但它仍然无效...

问候......

1 个答案:

答案 0 :(得分:1)

使用 TRUE FALSE值修改最后一行,这样它就不会逃脱NOW()函数:

$this->db->where('DATE_ADD(attempt_date,INTERVAL 30 MINUTE) >','NOW()', FALSE);

编辑: 运行此查询:

$this->db->where('ip_adress_hash', $this->encrypt->sha1($this->input->ip_address()));
$this->db->where('DATE_ADD(attempt_date,INTERVAL 30 MINUTE) >','NOW()', FALSE);
$val = $this->db->get('mb_login_attempts');

EDIT2: 它仍然可以使用这个表格:

...

$this->db->where('ip_adress_hash', $this->encrypt->sha1($this->input->ip_address()));
$this->db->where('DATE_ADD(attempt_date,INTERVAL 30 MINUTE) >','NOW()', FALSE);

if($this->db->count_all_results('mb_login_attempts') >= 3) {

 return true;    

}