2016-04-03 94 views
1

我在每页的顶部都有以下内容,所以当任何人加载网站时,PHP会删除特定数据库表中超过3天的任何记录。PHP删除3天以前的MySQL记录

$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()而不是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(); 
+0

为什么你的列是'varchar'?它不应该是'日期'或'日期时间'吗? –

+0

因为用户从下拉菜单中选择一个日期,该日期会生成从今天到今天的两个星期。所以所有的'选项'看起来都像'

+0

据我所知'date'或'datetime'需要一个特定的格式,但我从表格中提取日期并以该格式显示给用户。 –

回答

2

尝试通过计算首先要提供日期,然后用它在查询像下面

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

它可以帮助你。如果需要其他解决方案或帮助,请在此处询问。

+0

你在最后一行末尾丢失了一个'''',但修正了这个错误并删除了'''后,我得到它与 '$ date = date(“mdY”,strtotime(' - 3 day' )); $ conn = getConnected(“oversizeBoard”); mysqli_query($ conn,“DELETE FROM postedLoads WHERE date''date'”);'谢谢:) –

+0

啊......感谢您的注意。小错误发生,但像你这样的人正在纠正它们。编辑答案。 –