2012-08-01 201 views
-4

我有一個cron作業,我需要運行每分鐘來檢查一個數據庫表。該表由兩個字段(用戶名,持續時間)組成。 lastping是一個mysql datetime對象,由另一個腳本使用mysql NOW()函數設置。我需要檢查最後更新後是否已經過了一分鐘,如果它在最後一分鐘沒有更新,我想刪除包含該用戶名和持續的行。我想我可以檢查使用像這樣的SQL語句。MySQL選擇並刪除行

FROM client WHERE lastping < NOW() - INTERVAL 1 MINUTE; 

我的問題是,我如何格式化select語句來檢查整個表並刪除記錄,如果它已超過一分鐘。

我將每15-30秒更新一次仍然連接用戶的數據庫。這樣做的目的是爲了讓我能夠在那一刻或至少在過去的60秒內看到哪些最終用戶正在使用我的C++應用程序,因此我可以保留統計數據。

這是我到目前爲止所做的,輸出是刪除非活動用戶,但實際上並沒有發生。

mysql_connect(SERVER, USERNAME, PASSWORD); 
mysql_select_db(DATABASE); 
$query="DELETE (username, lastping) from client where lastping < NOW() - INTERVAL 1 MINUTE"; 
mysql_query($query) or die ('Error updating database'); 
echo "Deleted inactive users"; 
+0

您需要研究如何刪除具有條件的行。它在MySQL手冊中。 [有時閱讀](http://dev.mysql.com/doc/refman/5.0/en/delete.html)。 – Matt 2012-08-01 18:11:05

+0

你不想要「小於」嗎? '在哪裏持續 Wiseguy 2012-08-01 18:11:09

+0

'從客戶端刪除> NOW() - INTERVAL 1 MINUTE'?答案几乎是在這個問題上。或者我誤解了你想達到的目標 – 2012-08-01 18:11:38

回答