2010-09-07 3 views

Répondre

7

Des guillemets simples (') et des guillemets (") sont utilisés pour spécifier des chaînes dans MySQL. Les backticks (`) sont utilisés pour les références colonne/table.

Votre deuxième requête échouera pour deux raisons:

  1. 'users' spécifie une chaîne, pas une référence à la table users et FROM attend un table reference.
  2. 'username' = 'admin' effectue une comparaison de chaînes et la chaîne username n'est jamais égale à la chaîne admin.
+3

+1: SQL considère généralement que les guillemets simples contiennent du texte et non un nom de colonne. MySQL utilise des backticks (pas d'autres à ma connaissance), mais ils sont [seulement nécessaire pour échapper à l'époque où quelqu'un a pris la mauvaise décision d'utiliser ce qui est un mot réservé dans MySQL] (http://dev.mysql.com/doc /refman/5.0/fr/reserved-words.html) –

+0

Si vous activez le mode ANSI, les doubles guillemets standard sont également acceptés pour les noms de colonne et de table (rendant MySQL plus conforme à la norme SQL - en fait, il y a beaucoup des options qui devraient être activées pour désactiver certaines des bizarreries MySQL non standard) –

0

Ce n'est pas la syntaxe juridique de citer le nom d'une colonne avec '

Le `(backtick) est utilisé pour citer les identificateurs.

Étant donné qu'aucun de vos colonnes sont des mots réservés, cela fonctionnerait aussi:

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

MySQL, par défaut guillemets simples (') et des guillemets doubles (") sont chaîne littérale délimiteurs, tandis que les apostrophes inverses (`) sont des guillemets d'identifiants. Si vous définissez le mode SQL pour inclure ANSI_QUOTES, les guillemets doubles seront également des guillemets d'identificateur plutôt que des délimiteurs littéraux de chaîne.

Questions connexes