清理db中的会话表

时间:2011-11-15 04:28:33

标签: php mysql sql

我需要将所有会话存储在我的数据库中,我希望能够判断用户最近的会话是否已过期。

我尝试了这个,但你可以想象所有的会话中少于<当前时间显示。

"SELECT userid FROM session WHERE expiretime < '".date()."'"

基本上我需要对我知道的用户ID进行分组。 然后我需要它只限制每个用户ID 1 然后我需要确保它是最后一个会话ID

正确的做法! 好的,我想你要做到这一点,你需要使用IN

SELECT * FROM `user_sessions` WHERE id IN (SELECT max(id) as id FROM `user_sessions` GROUP BY userid)

3 个答案:

答案 0 :(得分:2)

有一条规则 要做某事,就必须知道他们在做什么 这是非常方便的原则,总能帮助我。

例如,如果我想比较存储在我的数据库中的某个日期,我必须知道它是什么格式。它是unix时间戳或日期时间还是某种自定义格式?
接下来我必须知道的是,在没有参数的情况下调用PHP date()函数输出,以及它是否与数据库格式匹配。如果它只是一个错误消息 - 而不是如何使它与数据库格式匹配(我为此阅读了一个文档页面)。
听起来很明智?希望如此。

接下来我要研究的是如何在mysql中执行日期计算。看来我需要使用mysql函数DATE_SUB()

进行一些比较

老实说,您确定要自定义会话存储吗?一个常规的人已经为你做了这一切。

答案 1 :(得分:0)

SELECT * FROM `user_sessions` WHERE id IN (SELECT max(id) as id FROM `user_sessions` GROUP BY userid)

答案 2 :(得分:-1)

尝试使用MySQL NOW()函数。

"SELECT userid FROM session WHERE expiretime < NOW()"