Как я могу написать SQL для таблицы, которая имеет то же имя, что и защищенное ключевое слово в MySql? [Дубликат]

На этот вопрос уже есть ответ:

Синтаксическая ошибка из-за использования зарезервированного слова в качестве имени таблицы или столбца в MySQL 1 ответ

Следующий запрос не будет выполнен

mysql_query("SELECT * FROM order WHERE orderID = 102;");

Это выдает следующее сообщение об ошибке:

У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'order WHERE orderID = 102' в строке 2

Как я могу написать SQL, который успешно запросит эту таблицу?

 xQbert22 мая 2012 г., 19:30
1) Во-первых, 1-й пост даст новому парню перерыв. обучать / помогать не критиковать. Я уверен, что вам нравится, когда вам говорят не использовать * в избранных утверждениях. 2) решить проблему. это простой выбор; не может быть много чего не так. Насколько закрытый вопрос и причина: ХОРОШАЯ ГРИФ. люди сталкиваются с проблемами зарезервированного слова все время. Это, вероятно, поможет кому-то в будущем.
 j0869122 мая 2012 г., 19:23
Вам нужно предоставить больше информации, чем у вас есть. Какие ошибки вы получаете?
 Xtian Macedo22 мая 2012 г., 19:23
Тебе следует рассказать подробнее о том, что ты пытаешься сделать. И перед тем, как спрашивать, предоставьте доказательство того, что вы нашли решение.
 Tim Medora04 апр. 2013 г., 07:29
Это зажгло мета обсуждение. С ревизиями я думаю, что это стоит открыть заново (и я проголосовал за это), потому что это такая распространенная синтаксическая ошибка. Но до этого это был просто не очень хороший вопрос, и он был правильно закрыт.
 Robik22 мая 2012 г., 19:23
Пожалуйста, прекратите использоватьmysql_* функции. Они устарели. Вместо этого используйте MySQLi или PDO. Также, пожалуйста, прочитайте документацию MySQL, которая соответствует версии mysql, установленной на вашем сервере, чтобы узнать, как должны выглядеть запросы. Также попробуйте использоватьmysql_error чтобы получить сообщение об ошибке.

Ответы на вопрос(3)

что люди предполагают, что запросы будут работать, а потом даже не удосуживаются попросить базу данных объяснить, почему все взорвалось. Попробуй это

$result = mysql_query("SELECT * FROM order WHERE orderID = 102;") or die(mysql_error());

хорошо, если нет больше кода, чем показано выше, выИМЕЮ для захвата возвращаемого значения вызова запроса, так как это возвращаемое значение является вашим дескриптором результата, из которого вы получаете результаты. Без этого дескриптора оператора вы в основном тратите время сервера БД (и свое собственное).


mysql_query("SELECT * FROM order WHERE orderID = 102;") or die("MySQL ERROR: ".mysql_error());

 Ajit22 мая 2012 г., 19:27
Как уже упоминал xQbert, Order - это зарезервированное слово mysql_query ("SELECT * FROM @&quoorder WHERE orderID = 102; ") или умри (" ОШИБКА MySQL: ".mysql_error ());
 ZiggidyCreative22 мая 2012 г., 19:24
У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'order WHERE orderID = 102' в строке 2
Решение Вопроса

а в качестве имен таблиц или полей; или оберните его в escape-символы, такие как `для mysql. Лично я просто избегаю их использования, потому что они обычно вызывают больше головной боли, чем они стоят в долгосрочной перспективе.

Пример

mysql_query("SELECT * FROM `order` WHERE orderID = 102;");

БОЛЬШЕ ИНФОРМАЦИ - вы можете получить больше информации о зарезервированном слове здесьhttps: //dev.mysql.com/doc/refman/5.5/en/keywords.htm

 Bill the Lizard22 мая 2012 г., 22:01
Аа, я бы узнал это сам, если бы только что прочитал твой ответ. :) Вынуждает ли MySQL использовать обратную галочку при создании таблицы с именем Orde
 Anthony Pegram04 апр. 2013 г., 07:08
Простите, но я переместил код, который он использовал в своем вопросе, в качестве решения для вашего ответа, который был помечен как принятый ответ. Не стесняйтесь редактировать, если вы не согласны с этой модификацией.
 hakre23 мая 2012 г., 00:04
Да, иначе у вас тоже будет синтаксическая ошибка.
 xQbert22 мая 2012 г., 21:55
@ BilltheLizard Вы можете использовать его, вы просто должны выйти из него, используя обратную галочку `.
 Bill the Lizard22 мая 2012 г., 19:57
Реальный вопрос в том, почему MySQL позволяет вам создавать таблицу с зарезервированным ключевым словом для имени, когда вы не сможете его использовать?

Ваш ответ на вопрос