简体   繁体   English

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

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

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