而不是CRON函数从旧的登录尝试中清除数据库我正在尝试使用查询来删除具有DATE_ADD间隔函数的所有行,但它不想工作。
$sql = $db->query("DELETE FROM failed_logins
WHERE last_attempt < DATE_ADD(CURDATE(), INTERVAL 15 MINUTE)");
尝试使用NOW()而不是CURDATE(),但它根本不识别INTERVAL,只删除所有内容。
这就是last_attempt栏子里面的样子 - 2015-01-29 13:33:02
答案 0 :(得分:1)
mysql> SELECT NOW() as `now`,
DATE_ADD(NOW(), INTERVAL 15 MINUTE) AS `now + 15 minutes`,
DATE_ADD(CURDATE(), INTERVAL 15 MINUTE) AS `midnight + 15 minutes`;
+---------------------+---------------------+-----------------------+
| now | now + 15 minutes | midnight + 15 minutes |
+---------------------+---------------------+-----------------------+
| 2015-01-29 12:54:56 | 2015-01-29 13:09:56 | 2015-01-29 00:15:00 |
+---------------------+---------------------+-----------------------+
1 row in set (0.00 sec)
由于last_attempt
列中的值可能已经过去,因此显而易见WHERE last_attempt < DATE_ADD(NOW(), INTERVAL 15 MINUTE)
将从表中选择并删除所有行。
我假设您要删除较早条目超过15分钟;正确的条件使用DATE_SUB()
来获取过去15分钟的时间戳:
DELETE FROM failed_logins
WHERE last_attempt < DATE_SUB(NOW(), INTERVAL 15 MINUTE);