Я пытаюсь создать подготовленный оператор с использованием PDO, который позволит мне создавать пользователей mysql, используя данные, собранные из формы. Когда я запускаю команду, я получаю ошибку:
SQLSTATE [42000]: Синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MySQL, для правильного синтаксиса для использования рядом с '' select 'ON' testjoke.authors 'to' corey '@' localhost '' в строке 1
В настоящее время я просто использую данные из некоторых переменных, которые я создал для тестирования, вместо данных из формы. Код выглядит так:
$grantQuery = $db->prepare("GRANT ? ON ? TO ?@'localhost';"); $select = 'select'; $testjoke = 'testjoke.authors'; $pdoemail = 'corey'; $grantQuery ->execute(array( $select, $testjoke, $pdoemail ));
Я включил общий журнал Mysql, и запрос никогда не появляется на нем (никогда не исполнялся).
Я пытаюсь найти исправление для этого на пару дней, но мне не повезло.
Любая помощь будет принята с благодарностью.
Благодаря Corey
Как вы не можете написать SELECT ? FROM ?
SELECT ? FROM ?
, вы также не можете разделить GRANT
на подготовленный запрос.
Подготовленные значения запроса могут быть только значениями. Из соображений безопасности среди многих других вы не можете передавать ключевые слова. Единственным параметром, который может работать в вашем случае, является имя пользователя, так как это строка.
PDO пытается запустить:
GRANT 'select' ON 'testjoke.authors' TO 'cory':'localhost';
Вы можете понять, почему это не сработает, надеюсь.