如何检查用户是否有过去 1 小时的 X 条记录?

我想检查用户在过去一小时内在我的 MySQL 数据库中是否有 5 条记录。这就是我现在的做法:


$link = mysqli_query($link, "SELECT * FROM find_points WHERE timestamp > '.time()-3600.' AND user_id = '1' ORDER BY id DESC");


if(mysqli_num_rows($link) >= 5) {

   echo 'more than 5 results';

}

看起来它应该工作,但它不起作用......


慕工程0101907
浏览 242回答 2
2回答

忽然笑

请使用以下查询SELECT * FROM find_points WHERE TIMESTAMPDIFF( hour,  timestamp , now() ) > 1  AND user_id = '1' ORDER BY id DESC您可以阅读有关TimestampDiff 的手册它可用于以各种格式运行 2 个日期之间的差异。请检查SqlFiddle上的Demo 它显示了 TimestampDiff 如何返回结果,您可以在 WHERE 子句中使用相同的结果。更新根据您的评论,时间戳存储为 Unix 时间戳,您可以使用以下查询:SELECT * FROM find_points WHERE TIMESTAMPDIFF( hour,  FROM_UNIXTIME(timestamp) , now() ) > 1  AND user_id = '1' ORDER BY id DESCFROM_UNIXTIME将您的 UNIX 时间戳转换为日期时间格式。然后,您可以将其传递给TIMESTAMPDIFF它将计算差异并返回小时数。希望这可以帮助。

BIG阳

“SELECT * FROM find_points WHERE timestamp > DATE_ADD(NOW(), INTERVAL 1 HOUR) AND user_id = '1' ORDER BY id DESC”
打开App,查看更多内容
随时随地看视频慕课网APP