在特定时间从数据库中删除一行

时间:2016-02-27 15:32:16

标签: php mysql ajax cron

用户可以在表格的时间表中插入一行,其中包括讲座的开始和结束时间。

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作业(可能使用事件调度程序?)

如果有任何其他方法可以解决这个问题,我会全力以赴。我是编码的菜鸟,所以如果这是一个愚蠢的问题,请原谅我,但要回答!

3 个答案:

答案 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)。这可能发生,就像数据库上的任何其他查询一样。