Php 在mysql数据库中存储登录时间

Php 在mysql数据库中存储登录时间,php,mysql,Php,Mysql,我正在尝试将登录时间存储在mysql数据库中。 我想要的是..当用户登录..脚本应该将当前时间存储在表“user”中,表中有一列“last_seen”。 最后看到的是DATETIME数据类型 以下是我编写的代码(这是登录脚本的一小部分。)它在用户输入用户名和密码并在数据库中匹配后工作:- $_SESSION['username']=$username; $_SESSION['logged']=1; $date = date('Y-m-d H:i:s'); $query = "INSERT INT

我正在尝试将登录时间存储在mysql数据库中。 我想要的是..当用户登录..脚本应该将当前时间存储在表“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)


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

不要在PHP中生成日期。只需

UPDATE .... SET last_seen=now() WHERE ...
                          ^^^^^
在mysql中


除此之外,
INSERT
在任何形状或表单中都不接受
WHERE
子句。

不使用PHP生成日期。只使用

UPDATE .... SET last_seen=now() WHERE ...
                          ^^^^^
$query = "UPDATE user
      SET last_seen = '" . $date . "'
      WHERE user_name = '" . $username . "'";
在mysql中

除此之外,
INSERT
绝不以任何形式接受
WHERE
子句

$query = "UPDATE user
      SET last_seen = '" . $date . "'
      WHERE user_name = '" . $username . "'";

但是,你应该使用<代码>现在()和代码>,这样MySQL会决定用户登录的时间。此外,考虑到密码比较时的启动事务和更新用户登录时的准确性。


但是,您应该使用
NOW()你所得到的错误意味着你有错配的引用:你应该更新一个列吗?还是插入一个新的行?我应该为用户“$username”更新列“last_seen”。您可能应该开始使用MySQlith您收到的错误表明您的引号不匹配您应该更新列吗?还是插入新行?我应该为用户“$username”更新列“last_seen”。您可能应该开始使用mysqliIt的perfect:)您必须更新表中存在的用户详细信息的上次查看列:)+1@Marc BIt的perfect:)您必须更新表中存在的用户详细信息的上次查看列:)+1@Marc B