web-dev-qa-db-fra.com

Erreur MySQL: colonne inconnue dans 'clause Where'

J'ai une table appelée bank avec trois colonnes: uid, nick, balance.

J'essaie de créer une requête qui va renvoyer le solde en fonction du pseudo, et j'obtiens une erreur Unknown column 'Alex' in 'where clause' lorsque j'utilise cette requête:

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

Quelqu'un peut-il voir ce que je fais mal ici?

11
Markum

les backticks (`) sont utilisés pour les identificateurs, tels que les noms de table, les noms de colonnes, etc. Les guillemets simples (') sont utilisés pour les littéraux de chaîne.

Vous voulez faire:

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

Ou, pour être plus explicite:

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

Lorsqu'il n'y a aucune chance d'ambiguïté et lorsque les noms de table/colonne ne contiennent pas de caractères spéciaux ni d'espaces, vous pouvez laisser le `éteint.

Voici une documentation sèche et difficile à lire: http://dev.mysql.com/doc/refman/5.0/fr/identifiers.html

Mais voici une question connexe sur dba.stackoverflow qui est plus facile à lire: https://dba.stackexchange.com/questions/23129/benefits-of-using-backtick-in-mysql-queries

Et voici une très bonne page que je recommande à tous de lire: http://www.sitepoint.com/forums/showthread.php?408497-the-big-bad-thread-of-quot-MySQL-Best-Practices -et-Autres-Informations-Utiles-quot

28
Joe Frambach

Vous utilisez le mauvais "` "

Utilisez 'à la place

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

Vous devez utiliser des guillemets simples (') et non des graduations pour les valeurs de vos champs.

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

Les coches sont utilisées pour désigner les noms de champs.

5
mellamokb

Ce sujet m'aide beaucoup. La SQL était à l'origine de l'erreur parce que les variables n'étaient pas avec comme ça: select * from accounts where name='$variable' dans où. Mais c’est arrivé seulement quand j’ajoute plus d’une condition dans WHERE

0