[英]PHP Delete MySQL Records Older Than 3 Days
I have the following at the top of every page so when the website is loaded by anyone PHP deletes any record in a specific database table that is 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");
The problem is nothing is being deleted. 问题是什么都没有被删除。
The data type for my date column is varchar(20)
and when I insert a date into MySQL it is entered using date("mdY")
. 我的日期列的数据类型是
varchar(20)
,当我将日期插入MySQL时,将使用date("mdY")
输入date("mdY")
。 The name of my date field is date
. 我的日期字段的名称为
date
。 So it appears that the above query would be correct, but I have done something wrong, and I am not certain as to what since every example I've looked at has basically looked the same except they used now()
instead of date()
but I use a specific date format so I can't use now()
in my query. 因此,上面的查询似乎是正确的,但是我做错了什么,而且我不确定该怎么办,因为我看过的每个示例基本上看起来都一样,只是它们使用了
now()
而不是date()
但我使用特定的日期格式,因此无法在查询中使用now()
。
What have I done wrong? 我做错了什么?
I even tried putting it into a function: 我什至尝试将其放入函数中:
function deleteOversizeRows() {
$conn = getConnected("oversizeBoard");
mysqli_query($conn, "DELETE FROM postedLoads WHERE date < DATE_SUB(DATE('m-d-Y'), INTERVAL 3 DAY");
}
deleteOversizeRows();
Try to provide date by calculating first and then use it in query like below 尝试通过首先计算来提供日期,然后在查询中使用它,如下所示
$date = date("m-d-Y", strtotime('-3 day'));
$conn = getConnected("oversizeBoard");
mysqli_query($conn, "DELETE FROM postedLoads WHERE date < '".$date."');
It might help you. 它可能会帮助您。 If need any other solution or help, do ask here.
如果需要任何其他解决方案或帮助,请在此处进行询问。
Use MySQL function TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2);
使用MySQL函数
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2);
Function calculates difference between two dates and returns output based on the unit parameter passed . 函数计算两个日期之间的差,并根据传递的unit参数返回输出。
Try this: 尝试这个:
DELETE FROM postedLoads WHERE TIMESTAMPDIFF('DAY',date,now())<3;
For detailed info of function: http://www.w3resource.com/mysql/date-and-time-functions/mysql-timestampdiff-function.php 有关功能的详细信息: http : //www.w3resource.com/mysql/date-and-time-functions/mysql-timestampdiff-function.php
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.