繁体   English   中英

PHP删除MySQL记录超过3天的记录

[英]PHP Delete MySQL Records Older Than 3 Days

每个页面的顶部都有以下内容,因此当任何人加载网站时,PHP都会删除特定数据库表中早于3天的任何记录。

$conn = getConnected("oversizeBoard");
mysqli_query($conn, "DELETE FROM postedLoads WHERE date < DATE_SUB(DATE('m-d-Y'), INTERVAL 3 DAY");

问题是什么都没有被删除。

我的日期列的数据类型是varchar(20) ,当我将日期插入MySQL时,将使用date("mdY")输入date("mdY") 我的日期字段的名称为date 因此,上面的查询似乎是正确的,但是我做错了什么,而且我不确定该怎么办,因为我看过的每个示例基本上看起来都一样,只是它们使用了now()而不是date()但我使用特定的日期格式,因此无法在查询中使用now()

我做错了什么?

我什至尝试将其放入函数中:

function deleteOversizeRows() {
$conn = getConnected("oversizeBoard");
mysqli_query($conn, "DELETE FROM postedLoads WHERE date < DATE_SUB(DATE('m-d-Y'), INTERVAL 3 DAY");
}
deleteOversizeRows();

尝试通过首先计算来提供日期,然后在查询中使用它,如下所示

$date = date("m-d-Y", strtotime('-3 day'));
$conn = getConnected("oversizeBoard");
mysqli_query($conn, "DELETE FROM postedLoads WHERE date < '".$date."');

它可能会帮助您。 如果需要任何其他解决方案或帮助,请在此处进行询问。

使用MySQL函数TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2);

函数计算两个日期之间的差,并根据传递的unit参数返回输出。

尝试这个:

DELETE FROM postedLoads WHERE TIMESTAMPDIFF('DAY',date,now())<3;

有关功能的详细信息: http : //www.w3resource.com/mysql/date-and-time-functions/mysql-timestampdiff-function.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM