MySQL: Inconnu colonne dans la clause where d'erreur
J'ai un script PHP et pour quelque raison que mysql conserve le traitement de la valeur pour sélectionner/insérer une colonne. Voici un exemple de ma requête sql:
$query = mysql_query("SELECT * FROM tutorial.users WHERE (uname=`".mysql_real_escape_string($username)."`)") or die(mysql_error());
Qui se transforme en:
SELECT * FROM tutorial.users WHERE (uname=`test`)
L'erreur était:
Unknown column 'test' dans 'où
clause de
J'ai aussi essayé:
SELECT * FROM tutorial.users WHERE uname=`test`
Vous devez vous connecter pour publier un commentaire.
Dans MySql, les backticks indiquer qu'un identifiant est un nom de colonne. (D'autres SGBDR utiliser des crochets ou des guillemets pour cela).
Afin que votre requête a été, "donnez-moi toutes les lignes où la valeur dans la colonne nommée 'uname' est égale à la valeur dans la colonne nommée "test"". Mais depuis il n'y a pas de colonne nommé test dans votre tableau, vous obtenez le message d'erreur que vous avez vu.
Remplacer les backticks avec des guillemets simples.
Bizarre? Comment alors? Il dit exactement ce qui est mauvais. Il n'y a pas de "test" de la colonne de votre tableau. Êtes-vous sûr que vous avez le droit de table? 'tutoriel.utilisateurs ? Êtes-vous sûr que la table n'est pas nommé différemment? Peut-être que vous vouliez faire
Vous avez pour référence seulement le nom de la table, pas de la base de données.. en supposant que la base de données est nommé
tutorial
exemple:
Notez les guillemets simples autour de l' $uname. Lorsque vous l'echo de la requête, c'est la sortie-
Toutefois, si vous manquez la citation autour de l' $uname variable dans une requête, c'est ce que vous obtiendrez-
Sur le serveur MySQL, le 2 requêtes sont différents. thierry est à la chaîne d'entrée et correctement encapsulée dans les guillemets, où, comme dans la seconde requête, il n'est pas, ce qui provoque une erreur dans MySQL.
J'espère que cette aide et excuse mon englis qui n'est pas très bon
J'ai eu le même problème et il s'est avéré être une faute de frappe.
Mon message d'erreur était:
J'ai vérifié que très colonne dans ma table, et il s'avère que, j'ai eu l'épeautre comme "départ" et non PAS "départ" dans le tableau, donc de jeter le message d'erreur.
J'ai par la suite changé ma requête:
et cela a fonctionné!
Donc mon conseil est clairement, vérifiez que vous l'épeautre, le nom de la colonne correctement.
J'espère que cela a aidé.
J'ai aussi été confronté au problème de "l'Inconnu de la colonne dans la clause where" lors de l'exécution de la suite à partir de linux (bash) de la ligne de commande.
C'est ce que j'ai
J'ai dû remplacer les guillemets simples 'test01" avec des guillemets doubles "test01" . Il a travaillé pour moi. Il y a une différence comment et la façon dont vous êtes l'exécution de requêtes sql.
Lors de l'affectation d'une valeur à une variable dans un script, et plus tard, à l'aide de cette variable dans une instruction sql à exécuter par le script, il y a une légère différence.
Si supposons que la variable est
et que vous souhaitez passer cette valeur à partir de l'intérieur de script pour mysql, puis les guillemets simples travail.
Si différents moteurs évaluer les backticks et citations différemment.
C'est ma requête qui a travaillé à partir de ligne de commande de linux.