注册日期验证



我正在尝试删除未在 5 分钟内验证其帐户的用户。

我有一个数据库,可以自动添加以下格式的注册日期:current_timestamp(6),例如:2020-05-12 17:38:33.308392.

我有一个 php 脚本,它试图检查用户是否未经验证并且 5 分钟未过去:

$sql ="DELETE FROM users WHERE createdate < ? AND verified = ?;";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql)){
header("Location:../register.php?error=sqlerror");
exit();                            
}
else{  
$a = 1;
$date = date("U") + 300;
mysqli_stmt_bind_param($stmt, "ss", $date, $a);
mysqli_stmt_execute($stmt);
}

我假设代码不起作用,因为 date("U"( 函数不会产生相同的日期格式/类型。

我应该如何解决这个问题? 在数据库中输入 date("U"( 函数,还是有没有办法让 SQL 识别日期?

您可以将 MySQL 间隔与 TIMESTAMPADD 和 CURRENT_TIMESTAMP 结合使用,为其添加 5 分钟。

DELETE FROM users WHERE 
(TIMESTAMPADD(MINUTE,5,createdate)) < CURRENT_TIMESTAMP(6)
AND verified = ?;

架构 (MySQL v5.7(

Select * from `time`;
| id  | date                       |
| --- | -------------------------- |
| 1   | 2020-05-19 17:38:33.308392 |
| 2   | 2020-05-13 11:57:35.567192 |
---

在DB Fiddle上查看

最新更新