核对注册日期

问题描述 投票:1回答:1

我想删除那些没有在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识别日期?

php sql
1个回答
2
投票

你可以使用 MySQL间隔 与TIMESTAMPADD和CURRENT_TIMESTAMP结合使用,使其增加5分钟。

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

Schema (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上查看

© www.soinside.com 2019 - 2024. All rights reserved.