我想在我的PHP代码中使用以下MySQL查询:
DELIMITER |
CREATE EVENT event1
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
DO
BEGIN
UPDATE user SET access_flag = 0 WHERE user_id = 1;
UPDATE user SET access_counter = 0 WHERE user_id = 1;
END;
| DELIMITER ;
这是我的PHP代码:
$sql="DELIMITER | CREATE EVENT event$user_id
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
DO
BEGIN
UPDATE user SET access_flag = 0 WHERE user_id = $user_id;
UPDATE user SET access_counter = 0 WHERE user_id = $user_id;
END;
| DELIMITER";
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
而且,这是我得到的错误:
错误:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在“DELIMITER”附近使用正确的语法创建活动事件9在CURRENT_TIMESTAMP + INTERVAL'在第1行
有趣的是,当我在终端或MySQL Workbrench中直接执行MySQL查询时,它运行正常。我做错了什么?
实际上,我通过消除多个语句并使用这样的查询来实现它:
CREATE EVENT event1
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
DO
UPDATE user SET access_flag = 0,
access_counter = 0 WHERE user_id = 1;
感谢您的提示。我仍然不知道为什么它首先没有工作......
答案 0 :(得分:0)
试试这个:
$sql="CREATE EVENT event$user_id
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
DO
BEGIN
UPDATE user SET access_flag = 0, access_counter = 0
WHERE user_id = $user_id;
END;";
请注意,在控制台中使用DELIMITER来更改原始的MySQL分隔符“;”,因此不应破坏查询。在PHP中,您无需更改分隔符。当表相同时,你也可以使用一个UPDATE,只需将不同的状态分开, 另请注意,您只能创建一次EVENT。