在活动记录中使用本机 MySQL 函数 (codeigniter)
我正在尝试获取日期大于或等于今天的所有数据。 这就是我所做的:
$this->db->select('id, name');
$this->db->where('dr', '1');
$this->db->where('end >=', 'CURDATE()');
$query = $this->db->get('store');
但这不起作用。我错了什么?
I'm trying to get all data which date is greater than or equal to today.
Here is what I do:
$this->db->select('id, name');
$this->db->where('dr', '1');
$this->db->where('end >=', 'CURDATE()');
$query = $this->db->get('store');
But it doesen't work. What I wrong ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Active Records 会自动转义您的查询,因此 CURDATE() 将作为字符串传递,而不是使用 mysql 函数。
您最好手动运行查询,例如
或者,如果您仍然想使用 AR,您可以将 FALSE 作为
$this- 的第三个参数传递
>db->where
以避免 CI 自动转义:Active Records automatically escapes your query, so CURDATE() will be passed as a string instead of using the mysql function.
You'd better off runing your query manually, something like
Or if you still want to use AR, you could pass a FALSE as third parameter of
$this->db->where
to avoid automatic escaping by CI:我在 CI 中不使用活动记录,但我猜测
CURDATE()
被放入查询中的字符串中,因此它正在执行WHERE end >= 'CURDATE()'< /code> 与
WHERE end >= CURDATE()
相反如果
end
是时间戳字段尝试...如果
end
是日期时间实地尝试...I don't use active records in CI but I would guess that
CURDATE()
is being put in a string in the query so it's doingWHERE end >= 'CURDATE()'
as opposed toWHERE end >= CURDATE()
If
end
is a timestamp field try...If
end
is a datetime field try...