Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.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
Php 如何自动删除数据库中存在一个月的mysql记录_Php_Mysql - Fatal编程技术网

Php 如何自动删除数据库中存在一个月的mysql记录

Php 如何自动删除数据库中存在一个月的mysql记录,php,mysql,Php,Mysql,我想自动删除mysql表记录。我的项目是一个查询应用程序。一个客户端通过移动应用向服务器提问。如果Equiry中的人没有回答,这个问题必须在一个月后自动删除。我怎么做?使用mysql事件?我使用的是wampserver。如果客户要求你“删除”一条记录,你应该知道你应该找到更好的解决方案。删除用户的记录是不可行的,如果您想再次使用该数据该怎么办 你要做的是加几根柱子。添加一个带有日期的“开始时间”值,并添加一个“活动”记录,您可以在其中声明1或0是否处于活动状态 您可以运行任务将活动值更改为0,并

我想自动删除mysql表记录。我的项目是一个查询应用程序。一个客户端通过移动应用向服务器提问。如果Equiry中的人没有回答,这个问题必须在一个月后自动删除。我怎么做?使用mysql事件?我使用的是wampserver。

如果客户要求你“删除”一条记录,你应该知道你应该找到更好的解决方案。删除用户的记录是不可行的,如果您想再次使用该数据该怎么办

你要做的是加几根柱子。添加一个带有日期的“开始时间”值,并添加一个“活动”记录,您可以在其中声明1或0是否处于活动状态

您可以运行任务将活动值更改为0,并在应用程序中仅获取活动值

对于MySQL,您可以使用以下内容:

CREATE 
EVENT `your_event` 
ON SCHEDULE EVERY 1 DAY 
DO BEGIN

UPDATE table SET active = 0 WHERE your_date < date_sub(now(), interval 1 month) 
如果你真的想,你可以在那里使用DELETE


实际上,我们还没有测试过上面的代码,但它应该可以工作

客户要求在一个月后删除某些内容是一项严肃的要求。我建议做两件事。首先,向数据库中的每一行添加创建日期,并使用以下方法访问数据库:

select t.*
from table t
where t.creationdate >= date(now()) - interval 1 month;
这样可以确保在任何查询中只获得适当的行。事实上,您可以将其包装到视图中,并且只在应用程序中使用该视图

然后,在空闲时运行作业以删除任何超过一个月的内容:

delete from t
    where t.creationdate < date(now()) - interval 1 month;

使用此方法,用户将永远不会看到旧值,即使您错过了运行delete。此外,您可以在服务器上安排一段安静的删除时间,这样就不会干扰其他活动。

Cronjob是一个非常简单的解决方案,它可能会有所帮助。.我通常编写一个php脚本,使用任务调度器进行维护并每天运行。