2011-07-28 37 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,我敢肯定表格內容,當我說它不刪除記錄時,所以我的意思是記錄存在! 。但我使用表模式更新我的主題 –