簡體   English   中英

在特定時間從數據庫刪除一行

[英]Delete a row from database at a specific time

用戶可以在“時間表”表中插入一行,其中包括講座的開始時間和結束時間。

INSERT INTO `timetable`(`Lab`, `start`, `end`, `Day`, `Lecture`, `Student`, `T_ID`) 
    VALUES ('$lab','$stime','$etime','$day','$lec','$class','$ID')

我希望該行在講座結束后自動刪除,即當前時間等於該講座的結束時間。

一種方法(我在網上的某個地方找到了)是使用mysql事件

SET GLOBAL event_scheduler = ON;
CREATE EVENT delete_event
   ON SCHEDULE AT '2016-27-2 08:00:00'
   ON COMPLETION PRESERVE
  DO
    BEGIN
      DELETE FROM `timetable` WHERE (`Lab`= $lab, `start`, `end`, `Day`)
    END;

但是問題是,我無法通過php變量代替計划時間。 這樣的事情。

SET GLOBAL event_scheduler = ON;
CREATE EVENT delete_event
   ON SCHEDULE AT '<?php echo($etime)?>'
   ON COMPLETION PRESERVE
  DO
    BEGIN
      DELETE FROM `timetable` WHERE (`Lab`= $lab, `start`, `end`, `Day`)
    END;

我發現此問題的另一個解決方案是創建一個cron作業(我一點都不熟悉)。 據我了解,可以使用托管服務器中的cpanel(或任何其他控制面板)完成此操作。 但是,如果我使用本地主機怎么辦? 還有其他任何方法可以手動創建cron作業,而無需使用任何控制面板(也許使用事件調度程序?)

如果還有其他方法可以解決此問題,我全神貫注。 我在編碼方面是菜鳥,所以如果這是一個愚蠢的問題,請原諒我,但請回答!

使用示例行C:\\ xampp \\ php \\ php.exe -f C:\\ xampp \\ htdocs \\ somwhere.php>創建Cron.bat文件,並使用Windows事件計划程序

您可以嘗試重復的事件。 例如

CREATE EVENT
ON SCHEDULE
  EVERY 1 DAY
ON COMPLETION PRESERVE
DO
  BEGIN
    DELETE FROM `timetable` WHERE (`day` < NOW())
  END;

查看文檔: http : //dev.mysql.com/doc/refman/5.7/en/create-event.html

另一種解決方案是在添加時間數據時,在同一腳本中添加事件(就像您已經擁有的事件一樣,但是沒有ON COMPLETION PRESERVE )。 就像數據庫上的任何其他查詢一樣,這可能發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM