2016-04-03 18 views
1

私はすべてのページの先頭に次のように記述しています。だから、誰でもPHPをロードすると、PHPは特定のデータベーステーブルのレコードを3日以上削除します。PHP MySQLのレコードを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です。上記のクエリは正しいと思われますが、私は何か間違ったことをしています。私が見たすべての例は、date()の代わりにnow()を使用した以外は基本的に同じですが、特定の日付形式を使用しているため、私のクエリに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'のですか? 'date'か' datetime'でなければなりませんか? –

+0

ユーザは今日から今日までの日数を生成するドロップダウンから日付を選択するためです。 'option value =" 01-12-2012 ">' –

+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

ああ...通知ありがとうございました。小さな間違いが起きますが、あなたのような人は正しいことをしています。 –

関連する問題