2014-09-26 3 views
-2

Я хочу использовать следующий запрос MySQL в моем PHP код:MySQL запросов работает в терминале, но не работает в PHP

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)); 
       } 

И это ошибки я получаю:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER | CREATE EVENT event9 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL' at line 1

Забавно, что когда я выполнить запрос непосредственно в MySQL в терминале или MySQL Workbrench это работает хорошо. Что я делаю не так?

На самом деле, я получил его на работу, устраняя несколько операторов и используется запрос, как это:

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

и переменная $ user_id в порядке. Вы видите по ошибке, что оно имеет значение 9 ... – user3362334

+2

Почему два 'UPDATE' запроса? Требуется только один. – 2014-09-26 23:45:55

+1

Вы пробовали без DELIMITER? – bksi

ответ

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;"; 

Обратите внимание, что знак используется в консоли, чтобы изменить оригинальный MySQL разделитель «;», поэтому запрос не должен быть сломан. В PHP вам не нужно менять разделитель. Также вы можете использовать один UPDATE, когда таблица такая же, просто разделяйте разные состояния с помощью, Также обратите внимание, что вы можете создавать EVENT только один раз.

Смежные вопросы