用户可以在表格的时间表中插入一行,其中包括讲座的开始和结束时间。
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作业(可能使用事件调度程序?)
如果有任何其他方法可以解决这个问题,我会全力以赴。我是编码的菜鸟,所以如果这是一个愚蠢的问题,请原谅我,但要回答!
答案 0 :(得分:0)
使用示例行C创建一个cron.bat文件:\ xampp \ php \ php.exe -f C:\ xampp \ htdocs \ somwhere.php&gt; C:\ xampp \ htdocs \ somwhere.log并使用Windows事件调度程序
答案 1 :(得分:0)
你可以尝试重复的事件。例如
CREATE EVENT
ON SCHEDULE
EVERY 1 DAY
ON COMPLETION PRESERVE
DO
BEGIN
DELETE FROM `timetable` WHERE (`day` < NOW())
END;
查看文档:{{3}}
答案 2 :(得分:0)
另一种解决方案是在添加时态数据时,在同一个脚本中添加您的事件(就像您已经拥有,但没有ON COMPLETION PRESERVE
)。这可能发生,就像数据库上的任何其他查询一样。