2011-07-28 30 views
0

我需要帮助的一个简单的问题后,删除表的mysql的记录一分钟

$tme = date("Y-m-j H:i:s"); 
mysql_query("DELETE FROM PM_TABLE WHERE date <= $time - INTERVAL 60 SECOND"); 

所以,它应该工作,并删除所有旧的记录,只要长1分钟。

但它不能做的操作。

返回值将是这样的:\

DELETE FROM PM_TABLE WHERE date <= 2011-07-28 08:49:29 - INTERVAL 60 SECOND 

表模式:

CREATE TABLE IF NOT EXISTS `PM_TABLE` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `text` varchar(255) COLLATE utf8_bin NOT NULL, 
    `date` datetime DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) 
+0

如果PHP的执行速度很快,让MySql做更多的工作可以代替MySql,因为MySql通常比较难以扩展然后是PHP。并尝试总是使用“反向”来转义字段/表名,因为您可以通过使用特殊(保留)名称获得意想不到的结果。只要做$ tme = date(“Y-m-j H:i:s”,time() - 60); (“DELETE FROM \'PM_TABLE \'WHERE \'date \'<= \”$ time \“;”)OR die(mysql_error()); – XzKto

+0

您是否还可以显示您希望被删除的几行? –

回答

5

的PHP变量是越来越注入作为一个字符串,没有单引号来界定它的SQL来解释它正确。但你不需要PHP函数 - 使用:

mysql_query("DELETE FROM PM_TABLE 
       WHERE date <= NOW() - INTERVAL 60 SECOND"); 
+0

是的,谢谢,我知道现在(),但它不是以任何方式工作。它真的很奇怪为什么它不能删除记录。 –

+0

@Mac Taylor:您必须发布“PM_TABLE”的CREATE TABLE语句 - 或者您没有要删除的数据。 –

+0

Nah,我敢肯定表格内容,当我说它不删除记录时,所以我的意思是记录存在! 。但我使用表模式更新我的主题 –