0

我正在尝试将登录时间存储在 mysql 数据库中。我想要的是..当用户登录时..脚本应该将当前时间存储在具有“last_seen”列的“user”表中。last_seen 是 DATETIME 数据类型。

这是我编写的代码(它是登录脚本的一小部分......它在用户输入用户名和密码后工作,并且它们在数据库中匹配。:-

$_SESSION['username']=$username;
$_SESSION['logged']=1;
$date = date('Y-m-d H:i:s');
$query = "INSERT INTO user
          (last_seen)
          VALUES
          ('" . $date . "')
          WHERE user_name = '" . $username . "'";
         mysql_query($query, $db) or die (mysql_error($db));
header('Refresh: 5; URL = main.php');
echo "Login successful, redirecting...";
die();

这引发了错误:-您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的 'WHERE user_name = 'test'' 附近使用正确的语法(我登录的帐户的用户名是 :- test)

我要更改什么代码才能工作?代码会将用户的登录时间存储在数据库中(稍后将在后端页面访问)。

4

2 回答 2

5

不要在 PHP 中生成日期。拥有它要容易得多

UPDATE .... SET last_seen=now() WHERE ...
                          ^^^^^

在mysql中。

除此之外,INSERT任何形状或形式都不接受WHERE子句。

于 2013-07-31T16:36:36.087 回答
-1
$query = "UPDATE user
      SET last_seen = '" . $date . "'
      WHERE user_name = '" . $username . "'";

但是,您应该使用NOW()MySQL 来确定用户何时登录。此外,为了准确起见,请考虑在比较密码和更新用户登录时启动事务。

于 2013-07-31T16:40:43.017 回答