0

我想制作在线/离线状态,我制作了一个表格user_status,我想在标题 sql 查询中添加,所以每次用户加载页面时,表格都会随着时间更新;

user_status 表是:user_id | 上次活动时间; 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_idlast_activity_time

之后,我将要在特定页面中添加用户名旁边的文本(在线/离线)。

谢谢大家!

4

3 回答 3

2

正如PHP 手册中关于函数的章节的介绍mysql_*中所述:

不建议将此扩展用于编写新代码。相反,应该使用mysqliPDO_MySQL扩展。在选择 MySQL API 时,另请参阅MySQL API 概述以获得更多帮助。

使用 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();
于 2012-08-02T13:53:22.737 回答
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_*函数了。它们正在被弃用。而是使用PDOmysqli。如果您不确定要使用哪一个,请阅读 SO 中的这篇文章

于 2012-08-02T13:57:04.457 回答
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.";");
    }

?>
于 2012-08-02T13:54:16.427 回答