0

我的 mysql 数据库中存储了活动日志,每个日志都有一个注册的日期时间。我正在尝试编写一个简短的 php 脚本来删除所有超过 60 天的日志。我在尝试比较日期时间格式的时间时遇到了麻烦。

这是我所拥有的:

$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'");    

    }

这个查询有什么问题?

4

1 回答 1

1

一切。

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

完毕。


详细说明:

  • 当 MySQL 完全能够进行正确的计算时,您正在使用 PHP
  • 您没有将字段名称包含在反引号中,这是一个问题,因为date它是一个关键字。
  • 您一次删除一行,这会导致查询数量可能不受限制,而不是一次全部删除(例如使用IN列出要删除的 ID)
于 2012-04-24T00:30:32.757 回答