В MySQL «приводит к ошибке», работает нормально. Почему?

0
$query = "SELECT * FROM `users` WHERE `username` = 'admin'";#works

$query = "SELECT * FROM 'users' WHERE 'username' = 'admin'";#does not work

Является ли это еще одним причудом, к которому мне придется привыкнуть, или что-то смешное происходит?

Теги:
quotes

3 ответа

7
Лучший ответ

Одиночные кавычки (') и двойные кавычки (") используются для указания строк в MySQL. Backticks (`) используются для ссылок столбца/таблицы.

Второй запрос не будет выполнен по двум причинам:

  • 'users' указывает строку, а не ссылку на таблицу users, а FROM ожидает ссылку .
  • 'username' = 'admin' выполняет сравнение строк, а строка username никогда не равна строке admin.
0

Это не легальный синтаксис, чтобы указать имя столбца с помощью

Для цитирования идентификаторов используется `(backtick).

Поскольку ни один из ваших столбцов не является зарезервированным ключевым словом, это тоже сработает:

 "SELECT * FROM users WHERE username = 'admin'"
0

В MySQL по умолчанию одиночные кавычки (') и двойные кавычки (") являются литеральными разделителями строк, а обратные обратные (`) - кавычками идентификаторов. Если вы установите режим SQL для включения ANSI_QUOTES, то двойные кавычки будут также скорее кавычками идентификаторов, чем литеральными разделителями строк.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню