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

-3

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

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

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

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

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

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

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

1) Во-первых, 1-й пост даст новому парню перерыв. обучать / помогать не критиковать. Я уверен, что вам нравится, когда вам говорят не использовать * в избранных утверждениях. 2) решить проблему. это простой выбор; не может быть много чего не так. Насколько закрытый вопрос и причина: ХОРОШАЯ ГРИФ. люди сталкиваются с проблемами зарезервированного слова все время. Это, вероятно, поможет кому-то в будущем. xQbert
Вам нужно предоставить больше информации, чем у вас есть. Какие ошибки вы получаете? j08691
Тебе следует рассказать подробнее о том, что ты пытаешься сделать. И перед тем, как спрашивать, предоставьте доказательство того, что вы нашли решение. Xtian Macedo
Пожалуйста, прекратите использоватьmysql_* функции. Они устарели. Вместо этого используйте MySQLi или PDO. Также, пожалуйста, прочитайте документацию MySQL, которая соответствует версии mysql, установленной на вашем сервере, чтобы узнать, как должны выглядеть запросы. Также попробуйте использоватьmysql_error чтобы получить сообщение об ошибке. Robik
Это зажгло мета обсуждение. С ревизиями я думаю, что это стоит открыть заново (и я проголосовал за это), потому что это такая распространенная синтаксическая ошибка. Но до этого это был просто не очень хороший вопрос, и он был правильно закрыт. Tim Medora

Ваш Ответ

3   ответа
0

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

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

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

-1


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

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

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

Пример

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

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

Аа, я бы узнал это сам, если бы только что прочитал твой ответ. :) Вынуждает ли MySQL использовать обратную галочку при создании таблицы с именем Orde Bill the Lizard
Да, иначе у вас тоже будет синтаксическая ошибка. hakre
Простите, но я переместил код, который он использовал в своем вопросе, в качестве решения для вашего ответа, который был помечен как принятый ответ. Не стесняйтесь редактировать, если вы не согласны с этой модификацией. Anthony Pegram
Реальный вопрос в том, почему MySQL позволяет вам создавать таблицу с зарезервированным ключевым словом для имени, когда вы не сможете его использовать? Bill the Lizard
@ BilltheLizard Вы можете использовать его, вы просто должны выйти из него, используя обратную галочку `. xQbert

Похожие вопросы