Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查用户在过去1小时内是否有X条记录?[PHP/MySQL]_Php_Mysql_Timestamp - Fatal编程技术网

如何检查用户在过去1小时内是否有X条记录?[PHP/MySQL]

如何检查用户在过去1小时内是否有X条记录?[PHP/MySQL],php,mysql,timestamp,Php,Mysql,Timestamp,我想检查用户在过去一个小时内是否在我的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'; } 它看起

我想检查用户在过去一个小时内是否在我的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';
}
它看起来应该可以工作,但不工作…

请使用下面的查询

SELECT * FROM find_points WHERE TIMESTAMPDIFF( hour,  timestamp , now() ) > 1  AND user_id = '1' ORDER BY id DESC
您可以在手册中阅读有关

它可以用于以各种格式运行两个日期之间的差异

请在上查看演示 它显示了TimestampDiff如何返回结果,您可以在WHERE子句中使用相同的结果

更新

根据您的注释,时间戳存储为Unix时间戳,您可以使用以下查询:

SELECT * FROM find_points WHERE TIMESTAMPDIFF( hour,  FROM_UNIXTIME(timestamp) , now() ) > 1  AND user_id = '1' ORDER BY id DESC

FROM_UNIXTIME
将把UNIX时间戳转换为日期时间格式。然后,您可以将其传递给
TIMESTAMPDIFF
,后者将计算差值并返回小时数


希望这有帮助。

“从查找时间戳>日期添加(现在(),间隔1小时)和用户id='1'按id顺序描述的点选择*”

虽然它不是问题的根源,但您可能不想用查询结果覆盖
$link
,因为您以后可能需要该DB链接。问题的来源应该从语法突出显示中明确。您使用了错误的引号-
”.time()-3600。“
应该是
”.time()-3600。“
。(你的代码没有检查查询错误。如果检查了,你会从MySQL中得到一个清晰的语法错误。)@dereckkk我添加了SqlFiddle,它显示了它的工作原理。请随意使用它。@Dereckkk请用表定义和一些虚拟数据创建一个SQLFIDLE。@Dereckkk更新了答案。请查收。