如何在指定时间自动清空表格

时间:2018-09-21 15:39:30

标签: php mysql codeigniter

我需要在时间为23.59时删除表中的所有记录,我有以下查询:

function delChat() {
    $date = date('H:i');
    $this->db->where(dimasukkan, '23:59');
    $this->db->delete('chat');
}

但什么也没发生

1 个答案:

答案 0 :(得分:2)

请注意,我不了解PHP,因此无法提供有效的代码。但是,我会尽力帮助。

首先,您的问题不明确。您是要每天23:59 h从表中删除所有记录,还是要删除所有时间戳是23:59 h的记录?

如果您想每天在23:59 h清空表,(因为有些评论已经提出),cron工作将是正确的选择。

cron作业可以在Linux / Unix系统上使用;替代方法是at。在Windows下,您可以使用任务计划程序定期运行作业。

在每种情况下,请注意,您实际上无法预测该操作将花费多长时间。可能第二天00:00点甚至00:01点时它仍会运行,最终会给您带来麻烦。

如果要删除时间戳date列为23:59 h的每一行,您的代码会出现一些问题:

  • 您的where语句是错误的。您在此处将普通变量与常量进行比较。我不知道在这种情况下PHP / MySQL会做什么,但是这肯定不是您期望的。如果您想比较例如该常量的date列中,您将必须使用以下方式:... where('date', '23:59')

  • 几乎可以肯定,您的date列或时间戳不包含所需格式的日期/时间。因此,如果您想将hour:minutedate或timestamp列进行比较,则必须首先从中提取小时和分钟,并将其连接到所需的格式(或者MySQL已经提供了一个适当的函数),然后将结果与您的字符串常量进行比较。