[英]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.