it-swarm.com.ru

Ошибка MySQL: неизвестный столбец в предложении where

У меня есть таблица с именем bank с тремя столбцами: uid, nick, balance.

Я пытаюсь создать запрос, который будет возвращать баланс на основе ник, и я получаю сообщение об ошибке Unknown column 'Alex' in 'where clause', когда я использую этот запрос:

SELECT b.balance FROM bank AS b WHERE b.nick=`Alex` LIMIT 1

Кто-нибудь может увидеть, что я здесь делаю не так?

11
Markum

backticks (`) используются для идентификаторов, таких как имена таблиц, имена столбцов и т. д. Одинарные кавычки (') используются для строковых литералов.

Ты хочешь сделать:

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1

Или, чтобы быть более явным:

SELECT `b`.`balance` FROM `bank` AS b WHERE `b`.`nick`='Alex' LIMIT 1

Если нет никакой вероятности неоднозначности и если в именах таблиц/столбцов нет специальных символов или пробелов, вы можете оставить `off.

Вот некоторая документация, которая является сухой и трудной для чтения: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

Но вот связанный вопрос о dba.stackoverflow, который легче читать: https://dba.stackexchange.com/questions/23129/benefits-of-using-backtick-in-mysql-queries

И вот очень хорошая страница, которую я рекомендую всем прочитать: http://www.sitepoint.com/forums/showthread.php?408497-the-big-bad-thread-of-quot-MySQL-Best-Practices -и-Другая-Полезная-Информация-quot

28
Joe Frambach

Вы используете неправильное "` "

Используйте вместо

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1
6
fancyPants

Вам нужно использовать одинарные кавычки ('), а не галочки для значений ваших полей

SELECT b.balance FROM bank AS b WHERE b.nick='Alex' LIMIT 1

Галочки используются для обозначения имен полей.

5
mellamokb

Эта тема мне очень помогает. SQL вызывал ошибку, потому что переменные не были похожи на это: select * from accounts where name='$variable' в где. Но это произошло, только когда я добавляю более одного условия в WHERE

0
Guilherme Macedo