我想创建在线/离线状态,我创建了一个表user_status
,我想添加标题sql查询,因此每次用户加载页面时,表都将随时更新; < / p>
user_status表是:user_id | last_activity_time;
user_id
来自表users
;
我在标题中添加了这个:
//check update last_time_active
$date = date("Y-m-d H:i:s");
$query = mysql_query("update user_status SET last_activity_time=$date ");
?>
我怎样才能添加用户?如果他已登录,请检查他的user_id
并使用user_id
和last_activity_time
更新表格?这是对的吗?
之后我想在特定页面中添加用户名旁边的文本(在线/离线)。
全部谢谢!
答案 0 :(得分:2)
如the introduction中关于mysql_*
函数的PHP手册章节所述:
建议不要使用此扩展名来编写新代码。相反,应使用mysqli或PDO_MySQL扩展名。在选择MySQL API时,另请参阅MySQL API Overview以获得进一步的帮助。
使用PDO:
$dbh = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$qry = $dbh->prepare('
UPDATE user_status SET last_activity_time = NOW() WHERE user_id = ?
');
$qry->bindValue(1, $_SESSION['userid']);
$qry->execute();
答案 1 :(得分:2)
在用户登录时将用户ID存储在用户的$_SESSION
中。然后将其拉出并插入到查询中。
<?php
//confirmed login, set $userid to the user's ID
session_start();
$_SESSION['userid'] = $userid;
然后您的查询将如下所示(更新):
// Since, according to your comment, $username = $_COOKIE['username']
"UPDATE user_status SET last_activity_time = NOW() where user_id = (SELECT userid FROM users WHERE username='" . $_COOKIE['username'] . "')";
然而不要再使用mysql_*
功能。他们被弃用了。而是使用PDO或mysqli。如果您不确定使用哪一个,read this article from SO。
答案 2 :(得分:1)
你想要这样的东西:
<?php
$date = date("Y-m-d H:i:s");
if(isset($_SESSION['userid'])
// or whatever you are using to see if the user is active?
{
$query = mysql_query("update user_status SET userID=".$_SESSION['userID'], last_activity_time=".$date.";");
}
?>