【问题标题】:Codeigniter Query Builder - finding the number of records from a certain date not workingCodeigniter Query Builder - 查找某个日期的记录数不起作用
【发布时间】: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


【解决方案1】:

我将语句更改为以下内容并且它起作用了:

$this->db->where("FROM_UNIXTIME(`last_login`) >= NOW() - INTERVAL 1 DAY")->from('users')->count_all_results();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    相关资源
    最近更新 更多