Php 在活动记录中使用本机MySQL函数(codeigniter)
我正在尝试获取所有日期大于或等于今天的数据。 以下是我的工作:Php 在活动记录中使用本机MySQL函数(codeigniter),php,codeigniter,Php,Codeigniter,我正在尝试获取所有日期大于或等于今天的数据。 以下是我的工作: $this->db->select('id, name'); $this->db->where('dr', '1'); $this->db->where('end >=', 'CURDATE()'); $query = $this->db->get('store'); 但它不起作用。我错了什么?我没有在CI中使用活动记录,但我猜CURDATE()被放入查询中的字符串中,因此它正
$this->db->select('id, name');
$this->db->where('dr', '1');
$this->db->where('end >=', 'CURDATE()');
$query = $this->db->get('store');
但它不起作用。我错了什么?我没有在CI中使用活动记录,但我猜
CURDATE()
被放入查询中的字符串中,因此它正在执行WHERE end>='CURDATE()'
而不是WHERE end>=CURDATE()
如果end
是时间戳字段,请尝试
$this->db->where('end >=', time());
$this->db->where('end >=', date("Y-m-d H:i:s"));
如果end
是日期时间字段,请尝试
$this->db->where('end >=', time());
$this->db->where('end >=', date("Y-m-d H:i:s"));
活动记录会自动转义查询,因此CURDATE()将作为字符串传递,而不是使用mysql函数。 您最好手动运行查询,例如
$query = $this->db->query("SELECT id,name FROM store WHERE dr = '1' AND end >= CURDATE()");
或如果仍要使用AR,可以将FALSE作为$this->db->where
的第三个参数传递,以避免CI自动转义:
$this->db->select('id,name')
->where('dr','1')
->where('end >=', 'CURDATE()', FALSE);
$query = $this->db->get('store');
时间戳类型现在应该为()