每当页面加载时更新sql表

时间:2012-08-02 13:51:03

标签: php mysql sql

我想创建在线/离线状态,我创建了一个表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_idlast_activity_time更新表格?这是对的吗?

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

全部谢谢!

3 个答案:

答案 0 :(得分:2)

the introduction中关于mysql_*函数的PHP手册章节所述:

  

建议不要使用此扩展名来编写新代码。相反,应使用mysqliPDO_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_*功能。他们被弃用了。而是使用PDOmysqli。如果您不确定使用哪一个,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.";");
    }

?>