添加数据到数据库,一定时间后自动删除?

iSa*_*FTW 5 php mysql database mysqli timer

所以,我在这个话题上做了很多谷歌搜索,但我找不到答案。所以,基本上,我正在寻找一个小型网站,它将从 HTML 表单中提取信息,将其发送到数据库,然后在两个小时后,它会自动删除自己。我有一个关于它如何工作的基本理论,但我不知道如何去做:我可以拉出当前的时间和日期,加上两个小时,然后将时间放入“过期”列中数据库。一旦时间是在 expires 列中的时间,数据将从数据库中删除。对不起,如果这是一个非常“noobish”的问题,我对使用 PHP 的数据库仍然有点陌生。

无论如何,任何帮助将不胜感激!谢谢!

Rig*_*lly 5

您可以向表中添加一个新的时间戳列,该列将自动添加创建行时的时间戳,如下所示

CREATE TABLE t1 (
   #your existing columns defined as before + this new column
   ts_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Run Code Online (Sandbox Code Playgroud)

现在,每次您在此表上创建一行时,MySQL 都会完成创建时的所有记录工作。

假设您可能无法在主机上创建 cron 作业,那么您可以在现有站点代码中最明显的位置添加删除代码来执行删除操作。

// remove old stale data
$sql = "DELETE FROM user
        WHERE ts_created < DATE_ADD(NOW(),INTERVAL -2 HOUR)";

if ( ! $mysqli->query($sql) ) {
    // log $mysqli->error somewhere
}
Run Code Online (Sandbox Code Playgroud)

尽管 cron 作业乍一看似乎是个好主意,但为了确保此表上的内容始终准确,您必须每 30 秒运行一次,甚至可能更频繁。这会妨碍该表上的其他活动,如果站点繁忙,这可能会成为问题,如果站点不繁忙,则大多数时间都会不必要地运行 cron。

如果您在向用户提供此信息之前添加删除代码,至少它只会在需要时运行,并且您还可以确保在向用户提供数据时表格始终准确。