如何在PHP中创建重复的MySQL事件

时间:2015-11-03 08:56:25

标签: php mysql

我有一张表需要会员每5天更新一次。如果行的上次更新超过5天,则事件调度程序将任何过时行设置为零。 我的开发环境是:

Windows 7, 32bit.
MySQL 5.5.39
PHP 5.4.45

我的第一个疑问是:

$query = 'CREATE EVENT event_name
ON SCHEDULE EVERY 5 HOUR 
ON COMPLETION PRESERVE ENABLE 
DO
UPDATE database_name.table_name SET table_column_name = 0 WHERE (CURRENT_TIMESTAMP - last_update_date) > 5 DAY'

我在PHP中运行脚本,但浏览器只是停止了。显示“未找到服务器”。

然后我在phpMyAdmin中测试了它。这次我得到:

  

#1064 - 您的SQL语法出错。检查与您的mysql服务器版本对应的mysql手册,以获得正确的语法   在'DAY'附近使用。

我检查了MySQL参考手册(但版本为5.6)。我的查询似乎是正确的,除非我遗漏了一些东西。所以我将查询更改为:

CREATE EVENT event_name
STARTS '2015-11-01 00:00:00'
ENDS '2030-11-01 00:00:00'
ON SCHEDULE EVERY 5 HOUR 
ON COMPLETION PRESERVE ENABLE 
DO
UPDATE database_name.table_name SET table_column_name = 0 WHERE (NOW() - last_update_date) > 5 DAY

仍然得到相同的结果。 在参考相关主题((How to schedule a stored procedure in MySQL))时,我的php信息中没有event_scheduler

请帮忙。

1 个答案:

答案 0 :(得分:1)

您尝试在事件上执行的查询似乎存在问题。假设last_update_date是datetime。

,您可以使用DATE_SUB()
UPDATE database_name.table_name SET table_column_name = 0 WHERE DATE_SUB(NOW(), INTERVAL 5 DAY) < last_update_date