PHP告诉登录的用户数量

时间:2017-05-16 17:52:38

标签: php mysql mysqli

我有一个带有DATETIME字段的MYSQL数据库,当用户通过AJAX登录时,该字段每分钟更新一次。这非常有效。但是,我试图计算有多少登录用户并且它无法正常工作

$table = 'mytable';
$query = "SELECT * FROM $table WHERE lidtm > DATE_SUB(DATE(now()), INTERVAL 1 MINUTE)";
$result = mysqli_query($dbc, $query);
$num = mysqli_num_rows($result);
echo $num;
从理论上讲,这应该告诉我有多少用户登录,因为每个用户的“lidtm”字段在登录时每分钟都会更新,因此如果DATE_SUB函数计算了lidtm字段所在的行数>现在() - 1分钟,它应告诉我所有用户在最后一分钟内由我的ajax更新。

但由于某种原因,它总是返回所有行。

我错过了什么。我需要计算'lidtm'字段在最后一分钟内的行数。

1 个答案:

答案 0 :(得分:2)

now()包裹date()将其投放到某个日期,即没有时间:

select date(now());
+-------------+
| date(now()) |
+-------------+
| 2017-05-16  |
+-------------

如果你想测量分钟,你需要时间:

select now();
+---------------------+
| now()               |
+---------------------+
| 2017-05-16 13:56:00 |
+---------------------+

所以,只需取出date()的电话,然后使用:

select date_sub(now(), interval 1 minute);
+------------------------------------+
| date_sub(now(), interval 1 minute) |
+------------------------------------+
| 2017-05-16 13:56:17                |
+------------------------------------+