Почему все мои SQL-запросы должны быть заключены в символ `? - PullRequest
0 голосов
/ 05 июля 2018

Я работал над базой данных для моей курсовой работы и использовал phpMyAdmin для ее создания. Сейчас я работаю над запросами, используя инструмент запросов.

Когда я выбираю таблицы и данные, которые я хочу запросить, и нажимаю «обновить запрос», он генерирует запрос, который выглядит примерно так:

SELECT `Customer`.`CustomerName`, `OrderDetails`.`Product`, `OrderDetails`.`QuantityOrdered`
FROM `Customer`
LEFT JOIN `Order` ON `Order`.`Customer` = `Customer`.`CustomerID`
LEFT JOIN `OrderDetails` ON `OrderDetails`.`Order` = `Order`.`OrderID`

Это прекрасно работает и дает мне результаты, которые я ожидал. Однако, когда я пытаюсь написать свой собственный запрос и поставить что-то вроде «SELECT Customer.CustomerName», БЕЗ символа «он не будет работать и просто выдает сообщение об ошибке.

Должен ли я всегда переносить их, используя символ ', чтобы запрос работал?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

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

Как вы можете видеть из моего примера ниже, использование обратных галочек не является обязательным для PHPMYADMIN;

No backticks PHPMYADMIN example Причина, по которой он не работает при удалении обратных галочек, заключается в том, что у вас есть столбец под названием «порядок». Порядок - это ключевое слово в SQL, поэтому его нельзя использовать в качестве имени столбца, не заключая его в кавычки или обратные кавычки.

0 голосов
/ 05 июля 2018

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

...