Является ли «ключ» зарезервированным словом в MySqli? Я получаю ошибку - PullRequest
0 голосов
/ 11 сентября 2011

Я просто вхожу в MySql / MySqli и использую подготовленные операторы. Весь мой скрипт работает нормально, за исключением одной строки:

if ($stmt = $con->prepare("SELECT bandHash, userHash, userPassHash, type FROM account_active WHERE key=?")) {

Я обнаружил, что это строка, вручную отследив ее, затем запустив функцию mysqli_error($resource), и получил этот результат 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 'key=?' at line 1

Пожалуйста, не беспокойтесь, это говорит о первой строке, это просто из-за того, как это было выполнено, это на самом деле строка 280.

Так что мне интересно, потому что я уже использую подобные выражения, является ли «ключ» зарезервированным словом, которое я не могу использовать, или мне нужно искать в другом месте мою ошибку?

Достаточно простого ответа да или нет, спасибо!

Ответы [ 2 ]

2 голосов
/ 11 сентября 2011

Да, ключ - это зарезервированное слово

Я бы рекомендовал переименовать его, чтобы избежать использования цитируемого имени везде

`key`
1 голос
/ 11 сентября 2011

Я не знаю, почему вы не могли найти это сами, но да , key - зарезервированное слово в MySQL .

Вы должны использовать обратные метки с именами полей, чтобы не беспокоиться об этом.

SELECT `bandHash`, `userHash`, `userPassHash`, `type`
  FROM `account_active`
 WHERE `key` = ?

Это не только решает вашу проблему, но и выглядит более явным и (как вы можете видеть) помогает подсветке синтаксиса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...