首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php mysql选择其值小于当前时间(时间戳)的列

php mysql选择其值小于当前时间(时间戳)的列
EN

Stack Overflow用户
提问于 2013-05-12 22:34:38
回答 1查看 836关注 0票数 2

好的,所以我试着做的是一个简单的任务,但我仍然不明白。我只想从MySql表中选择"last_action“列值小于当前时间(由php函数time()生成的时间戳)的行。

很明显,之前插入的所有值都小于当前时间:),但我不知道为什么我的简单脚本不信任“我的本能”:)

这是我用CODEIGNITER写的php函数,这没什么大不了的,重要的是查询:

代码语言:javascript
复制
function get_exp_sessions(){
    $time = time();
    $query = $this->db->query('SELECT * FROM session WHERE last_action < "$time"');

    echo $query->num_rows();
}

我得到的结果是零。

如果我把

代码语言:javascript
复制
last_action > $time

我得到"3“

我不明白..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-12 23:24:16

现在我明白了。您的报价不正确。外部字符串上有单引号,这导致变量$time不会插入到字符串中,而是直接作为$time传递。

MySQL将文字字符串值$time转换为整数,而任何非数字字符串将转换为零。

MySQL正在执行:

代码语言:javascript
复制
SELECT * FROM session WHERE last_action < 0

切换引号-不管怎样,在SQL中使用单引号将变量括起来是一种很好的做法,也是最可移植的,实际上,因为它是由time()生成的整数值(已知不需要转义),所以不需要使用引号。

代码语言:javascript
复制
$query = $this->db->query("SELECT * FROM session WHERE last_action < $time");

虽然在这种情况下不是绝对必要的,但如果$time被绑定为Codeigniter中的参数,而不是直接传递给查询,那么这是可以避免的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16508452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档