好的,所以我在这里看了很多类似的问题,但似乎都没有用。如果我是近视或缺乏正确搜索的能力,我会事先道歉。
所以我需要做的是检查我的MySQL数据库中的TIMESTAMP
,即15:55:13是否不超过运行脚本当前时间的1小时。
如果我错过了任何所需的代码,请告诉我。
到目前为止我所拥有的:
$result = mysqli_query($link, "SELECT *
FROM web_users
WHERE pass_reset_token='".$token."'
AND last_pass_reset < last_pass_reset
INTERVAL 1 HOUR")
or die(mysqli_error($link));
我之前尝试过的事情:
$result = mysqli_query($link, "SELECT *
FROM web_users
WHERE pass_reset_token='".$token."'
AND last_pass_reset < NOW()-INTERVAL 1 HOUR")
or die(mysqli_error($link));
此外:
$result = mysqli_query($link, "SELECT *
FROM web_users
WHERE pass_reset_token='".$token."'
AND last_pass_reset < DATE_SUB(CURTIME(),
INTERVAL 1 HOUR)")
or die(mysqli_error($link));
所以我的理解是我要求匹配以确保任何被操纵的SQL时间不小于 last_pass_reset ,也不超过1小时。
感谢。
EDIT ::
这是更新的sql查询,以确保我输入正确。
// Perform a database search using the paramteres of the global variable
$result = mysqli_query($link, "SET @scriptStartTime = CONCAT(CUR_DATE(), ' ', CUR_TIME())
SELECT *
FROM web_users
WHERE pass_reset_token='".$token."'
AND last_pass_reset > DATE_SUB(@scriptStartTime, INTERVAL 1 HOUR)")
or die(mysqli_error($link));
答案 0 :(得分:4)
NOW()
只返回timestamp
,CUR_TIME()
time
。
如果TIMESTAMP不超过当前时间的1小时
转换给我:
现在是12:34:56,所以我希望所有记录的last_pass_reset在11:34:56到12:34:56之间
正确?然后这应该工作:
SET @scriptStartTime = NOW();
SELECT *
FROM web_users
WHERE pass_reset_token='".$token."'
AND last_pass_reset > DATE_SUB(@scriptStartTime, INTERVAL 1 HOUR)
另一种俗气的方式:
SELECT *
FROM web_users, (SELECT @scriptStartTime:=NOW()) v
WHERE pass_reset_token='".$token."'
AND last_pass_reset > DATE_SUB(@scriptStartTime, INTERVAL 1 HOUR)
最终解决方案:
SELECT *
FROM web_users
WHERE pass_reset_token='".$token."'
AND last_pass_reset > TIME(DATE_SUB(NOW(), INTERVAL 1 HOUR))