2013-08-12 58 views
9

我想知道如何在日期過期時自動刪除記錄,我正在創建機票預訂網站。我需要從我的mysql數據庫中刪除所有過期的航班信息。我讀了一些我可以使用cron的地方,但我不知道該如何去做。腳本的任何幫助將會非常有幫助。日期到期時自動刪除表中的記錄?

+0

爲什麼要刪除它。只是不顯示它,如果它已經過期 –

+0

沒有必要。使用dbms調度。例如,MySQL有自己的[scheduler](http://dev.mysql.com/doc/refman/5.1/en/events-overview.html)。 – BlitZ

+0

使用crone作業執行自動過期腳本。 – irfanmcsd

回答

10

您可以嘗試使用MySQL Events爲:

CREATE EVENT IF NOT EXISTS `dbName`.`eventName` 
ON SCHEDULE 
    EVERY 1 DAY // or 1 HOUR 
COMMENT 'Description' 
DO 
    BEGIN 

    DELETE FROM `dbName`.`TableName` WHERE `DateCol` < NOW(); 

    END 

注意,MySQL的Event Scheduler需要你的服務器上啓用:

SET GLOBAL event_scheduler = ON; 

更多信息here

+0

你知道爲什麼> =值不顯示TODAYs值的任何原因嗎?就好像我正在進入>沒有= – cmario

+0

@cmario它取決於你實際比較的內容。 – BlitZ

+0

我找到了一個辦法 SELECT * FROM'table' WHERE'date'> = date(NOW())。謝謝回覆 – cmario

0

您需要該服務來檢查過期記錄並定期刪除。你應該使用這個SQL:

DELETE YourTable WHERE RecordDate < @Expiration

1

刪除記錄是不是一個好主意,我會建議你添加ActiveFrom和ActiveTo datetime列在您的詳細信息表,則不會顯示過期的記錄在你的前端。

0

克朗最適合您的情況。

  • 創建您的PHP文件,刪除或標記不需要的航班,腳本將簡單地連接到數據庫,執行您的查詢,並可能輸出一個短暫的成功/失敗消息。
  • 設置每X小時或任何你想要的執行該php腳本的cron作業。

如果您正在使用的cPanel,你可以設置你cron job from it

0

。利用科雷喬布斯。看看下面的表示。

Minutes [0-59] 
| Hours [0-23] 
| | Days [1-31] 
| | | Months [1-12] 
| | | | Days of the Week [Numeric, 0-6] 
| | | | | 
* * * * * home/path/to/command/the_command.sh 

如果你想安排一個任務在每週六早上8:30運行,它很可能看起來像這樣。

30 8 * * 6 home/path/to/command/the_command.sh 

只是玩弄你的設置,你最終會得到它。

+0

第二個呢? – Faytraneozter