【发布时间】:2019-09-03 22:03:01
【问题描述】:
在 codeigntier 中,我有以下内容:
echo $this->db->where('FROM_UNIXTIME(`last_login`) >=','NOW() - INTERVAL 1 DAY')->from('users')->count_all_results();
上面的结果是:0
我使用了 print_r($this->db->last_query());获取正在运行的实际 sql 字符串,如下所示:
SELECT COUNT( * ) AS `numrows`
FROM `users`
WHERE FROM_UNIXTIME( `last_login` ) >= NOW( ) - INTERVAL 1
DAY
当我使用 mysql 运行它时,我得到了正确的结果:1.
我猜测转义现在正在起作用,但无法弄清楚。有什么想法吗?
==== 新的更新。
对不起,CI3 吐出来了:
SELECT COUNT(*) AS `numrows`
FROM `users`
WHERE FROM_UNIXTIME(`last_login`) >= 'NOW() - INTERVAL 1 DAY'
当我在 mysql 中运行时,上面会产生 0。当我在下面使用时,它可以工作:
SELECT COUNT(*) AS `numrows`
FROM `users`
WHERE FROM_UNIXTIME(`last_login`) >= NOW() - INTERVAL 1 DAY
所以它是两个小撇号。我该如何解决?
【问题讨论】:
-
您好,除了使用
count_all_results()之外,您是否尝试过使用 CI 查询生成器中的num_rows();?还可以尝试在您的查询中添加$this->db->select('*')。 -
问题出在 sql 语句的 WHERE 部分。 WHERE 部分仍然没有改变,这似乎是问题所在。
-
@spreaderman 。 . .你确定这两个查询是在同一个数据库上运行的吗?
-
@GordonLinoff 是的,当然。
-
@GordonLinoff 抱歉,我刚刚更新了主要问题。似乎撇号是问题
标签: php mysql sql codeigniter