2012-04-24 20 views
0

mysqlデータベースに格納されているアクティビティログを、それぞれ登録されたdatetimeで取得しています。私は、60日以上経過したすべてのログを削除するための短いPHPスクリプトを作成しようとしています。時間を日時形式で比較しようとするのに問題があります。ここでPHPでMySQL Datetimeを使用して時刻を比較する

は、私が持っているものです。

$sixty_days_past = strtotime("-60 days"); 

$earliest_time = date("Y-m-d H:i:s", $sixty_days_past); 

$logs_result = mysql_query("SELECT id FROM df_logs WHERE date < '$earliest_time'"); 

    while($logs_row = mysql_fetch_array($logs_result)) { 

     $oldentry = $logs_row['id']; 

     mysql_query("DELETE FROM df_logs WHERE id='$oldentry'");  

    } 

このクエリが間違っていますか?

答えて

1

すべてです。

DELETE FROM `df_logs` WHERE `date` < DATE_ADD(NOW(),INTERVAL -60 DAY) 

完了。


詳しく説明するには:あなたがPHPを通過している

  • をMySQLはあなたがdateがあるため、問題がある、バッククォートでフィールド名を囲むされていません
  • 右の計算を行うための完全に可能である場合キーワード。
  • あなたは
+0

(削除するには、IDをリストするためにこのようなINのように)非常に良い行にクエリの潜在的に結合していない数になり、時間、1つを削除するのではなく、一度にすべて削除されます。説明をありがとう。 :) – JROB

関連する問題