получение этой расплывчатой ошибки в mysql У вас ошибка в синтаксисе SQL; проверьте… правильный синтаксис для использования рядом «

#php #mysql #mysqli #triggers

Вопрос:

#1064 — У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на наличие правильного синтаксиса для использования рядом с » в строке 1

Я получаю эту ошибку, когда пытаюсь выполнить этот запрос через phpmyadmin.

 CREATE TRIGGER `msg_outbox_updated_by_before_insert` BEFORE INSERT ON `msg_outbox` FOR EACH ROW BEGIN SET new.updated_by=@userId; END;
 

Это php-код, который я использую для создания и выполнения запроса.

 $dbconn->query("CREATE TRIGGER `" . $tableName . "_updated_by_before_insert` BEFORE INSERT ON `" . $tableName . "` FOR EACH ROW BEGIN SET new.updated_by=" . $newValue . "; END;");
 

Этот код запускается, но триггер не создается.

Edit1: Я только что запустил приведенный выше код на сервере, и он сработал, т. е. триггер создан. Я просто не понимаю, почему это не работает на локальной машине.

Комментарии:

1. В запросе есть две точки с запятой

2. $newValue возможно, он не заселен. Попробуйте скопировать строку и повторить/зарегистрировать ее. Как упоминает Дхарман, у вас есть 2 точки с запятой, что означает, что на самом деле он отправляет 2 утверждения. Если вы не пропустите mysqli_multi_query , это, вероятно, не сработает.