SQL Social - 在线用户

发布于 2024-09-25 19:49:30 字数 971 浏览 5 评论 0原文

我有一个表,

CREATE TABLE `tbl_users` (
  `user_id` int(11) NOT NULL auto_increment,
  `user_username` tinytext NOT NULL,
  `user_password` tinytext NOT NULL,
  `user_email` tinytext NOT NULL,
  `user_enabled` tinyint(4) NOT NULL default '1',
  `user_verified` tinyint(4) NOT NULL default '0',
  `user_verified_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `user_signup_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `user_login_date` datetime default NULL,
  `user_status` mediumtext NOT NULL,
  `user_online` tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (`user_id`)
)

每次用户访问网站时,user_login_date 都会更新,并且 user_online 设置为1,这意味着他在线。

如果用户上次访问是在 10 分钟前,我可以发送什么查询将 user_online 切换到 0(离线)?

我已经这样做了,

UPDATE tbl_users SET user_online = '0' WHERE (NOW() - user_login_date) > INTERVAL 10 minute

但这没有帮助。

I've got a table

CREATE TABLE `tbl_users` (
  `user_id` int(11) NOT NULL auto_increment,
  `user_username` tinytext NOT NULL,
  `user_password` tinytext NOT NULL,
  `user_email` tinytext NOT NULL,
  `user_enabled` tinyint(4) NOT NULL default '1',
  `user_verified` tinyint(4) NOT NULL default '0',
  `user_verified_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `user_signup_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `user_login_date` datetime default NULL,
  `user_status` mediumtext NOT NULL,
  `user_online` tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (`user_id`)
)

Every time a user visits the website user_login_date updates and user_online is set to 1, which means he's online.

What query can I send to switch user_online to 0 (offline) if user's last visit was 10 minutes ago?

I've already done like that

UPDATE tbl_users SET user_online = '0' WHERE (NOW() - user_login_date) > INTERVAL 10 minute

But that didn't help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只想待在家 2024-10-02 19:49:30

您应该对常量进行计算,以便可以使用 user_login_date 上的索引:

UPDATE tbl_users
SET user_online = '0'
WHERE NOW() - INTERVAL 10 MINUTE > user_login_date

You should do the calculations on the constants so that an index on user_login_date can be used:

UPDATE tbl_users
SET user_online = '0'
WHERE NOW() - INTERVAL 10 MINUTE > user_login_date
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文