2015-04-19 122 views
0

我可以连接到一个数据库就好,但不知道$query语法的使用和它是否应该是一个foreach或while循环...但这里是我试图做:mysqli和php:查询结构

我有一个名为users的表的数据库。每个用户都有一个值,表明他们是否正在登录系统。我也有一个在每行更新与$timestamp刷新用户活动,以便他们不会被闲置出来...

我需要知道我怎么可以通过mysqli程序样式查询数据库并说,前端$person(或表中的行)检查表格列“在线”是否设置为1或0,如果它设置为1,那么我需要能够做一个数学方程,需要$currentservertime并从存储在数据库中的$timestamp中减去,并查看它们是否已经闲置超过10或15分钟。对于每次空闲时间比这段时间更长的人,我需要将其在数据库中的“在线”状态从1更改为0(0表示他们不在线)。

这仅仅是一个函数,如果他们离浏览器更近并且不会退出程序或退出,就会摆脱数据库中用户的在线状态。

在此先感谢任何能帮助我解决问题的人,或者指引我走上正轨。我试着先搜索,但基于需要同时做两件不同的事情,我无法完全找到我正在寻找的东西。

+0

这可以在一个单一的查询来完成,没有PHP需要 –

+0

任何例子将不胜感激,这就是为什么我在这里,是因为我不知道如何,可能没有太大的在线与发现这两项行动。这一切都非常模糊:) – cjackson

回答

0

您不必选择所有行并让PHP过滤,因为如果用户表大约有1000万行,那么您的操作将非常缓慢。 您可以在不使用PHP的情况下设置离线用户。您的查询可能是:

$maxInactivity = 15; // in minutes 
$timestampToGoOffline = time()-($maxInactivity*60); 
$sql = "UPDATE users SET status = 0 WHERE last_action_timestamp < $timestampToGoOffline"; 
+0

谢谢你这么快的回复。我会尽快给你一个尝试,并让你知道:) – cjackson

+0

只是想放弃一条线,并说这工作完美。谢谢!即使即时有点延迟。 – cjackson