[英]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.