我在每个页面的顶部都有以下内容,因此当任何人加载网站时,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("m-d-Y")
输入的。我的日期字段的名称是date
。所以看起来上面的查询是正确的,但我做错了什么,我不确定是什么,因为我看过的每个例子基本上看起来都是一样的,除了他们使用now()
代替{ {1}}但我使用的是特定日期格式,因此我无法在查询中使用date()
。
我做错了什么?
我甚至尝试将它放入一个函数中:
now()
答案 0 :(得分:2)
尝试先通过计算提供日期,然后在查询中使用它,如下所示
$date = date("m-d-Y", strtotime('-3 day'));
$conn = getConnected("oversizeBoard");
mysqli_query($conn, "DELETE FROM postedLoads WHERE date < '".$date."');
它可能对你有所帮助。如果需要任何其他解决方案或帮助,请在此处询问。
答案 1 :(得分:0)
使用MySQL函数TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2);
函数计算两个日期之间的差异,并根据传递的单位参数返回输出。
试试这个:
DELETE FROM postedLoads WHERE TIMESTAMPDIFF('DAY',date,now())<3;
有关功能的详细信息:http://www.w3resource.com/mysql/date-and-time-functions/mysql-timestampdiff-function.php