MySQL和PHP存储并比较时间戳

时间:2016-04-16 07:55:29

标签: php mysql

目前,我的数据库中有一个表来存储与每个用户相关的信息,每行代表一个用户。我希望在其中添加两列,一列存储用户登录时的最近时间,另一列存储用户注销时的最近时间。

  1. 由于我对MySQL和PHP比较陌生,我想知道在MySQL中存储当前时间的最简单方法是什么?每次用户登录或注销时,我都希望使用当前时间更新相应的登录/注销时间列。

  2. 我可以使用问题1中描述的方法比较两个时间戳吗?我想比较上次登录时间和上次登出时间,以确定用户当前是否登录。

  3. 谢谢。

1 个答案:

答案 0 :(得分:0)

您应该将列类型设置为datetime,并在用户登录/注销时使用NOW()函数更新这些列:

update users set login_datetime = now() where user_id = :userId

update users set logout_datetime = now() where user_id = :userId

在PHP中,您可以使用DateTime对象轻松获取这些列并进行比较或执行任何操作:

$userLoggedInAt = new DateTime($row['login_datetime']);
$userLoggedOutAt = new DateTime($row['logout_datetime']);

$loginTime = $userLoggedOutAt->diff($userLoggedInAt);

echo 'The user was logged in for ' . $loginTime->format('%i minutes');

虽然我不明白为什么你会使用这种方法,你可以比较这两个对象来检查用户是否登录:

if ($userLoggedOutAt < $userLoggedInAt) {
    echo 'The user is logged in';
}

问题:使用您的方法,如果用户关闭浏览器,您将如何设置退出时间?