Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在活动记录中使用本机MySQL函数(codeigniter)_Php_Codeigniter - Fatal编程技术网

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');
时间戳类型现在应该为()