#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 , это, вероятно, не сработает.