[PHP] inclure variable dans requête SQL [Résolu/Fermé]

Signaler
Messages postés
66
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
29 novembre 2014
-
 toto -
Bonjour à tous,

Je voudrais inclure une variable php dans une requête SQL, j'ai essayé les syntaxes suivantes :

mysql_query("SELECT namefic FROM propriete_fic WHERE idpropfic= $id ",$cnx);

mysql_query("SELECT namefic FROM propriete_fic WHERE idpropfic= '$id' ",$cnx);

mysql_query("SELECT namefic FROM propriete_fic WHERE idpropfic= \'$id' \",$cnx);

mysql_query("SELECT namefic FROM propriete_fic WHERE idpropfic=".$id." ",$cnx);

Mais aucune ne fonctionne!

Merci de votre aide!!

4 réponses


vous avez connecté au base de données
Bonjour

Quand on veut une information sur une erreur, le mieux est de donner le message d'erreur. Enfin.
Je suppose évidemment qu'il n'y a pas de problème de connexion, que le nom de la table et des champs sont corrects... Je suppose que le problème porte uniquement sur le fait d'utiliser une variable, que quand tu le remplaces par une valeur, ça va bien.

La première devrait marcher si $id est un nombre. Si ce n'est pas un nombre, comme il n'y a pas de guillemets ni d'apostrophes autour de le valeur, le contenu de $id est pris pour un nom de champ.
La seconde devrait marcher si.. On verra plus loin
La troisième est farfelue. Dans une chaîne délimitée par des " ", le slash de \' ne sert pas à échapper le ', est est don passé tel quel à la requête. Par contre, le \" sur le double quote final sert à échapper ce double quote. Du coup, la chaîne ne s'arrête pas ici, la suite de ton code fait partie de la requête... Aïe !
La quatrième, c'est la même chose que la première. (À quoi sert l'espace ajouté à la fin ? mystère..)

Pour en revenir à la seconde, elle va marcher en général, mais pas si ta donnée contient une apostrophe. supposons que $id vaille "l'erreur" ;-)
SELECT namefic FROM propriete_fic WHERE idpropfic= '$id' devient SELECT namefic FROM propriete_fic WHERE idpropfic= 'l'erreur'
Si tu regardes la fin, tu vois que tu as WHERE idpropfic= 'l' qui est correct, mais que derrière il traîne erreur' dont mysql ne sait pas quoi faire.

Pour éviter ce genre de problème, il faut utiliser la fonction mysql_real_escape_string.

$id=mysql_real_escape_string($id);
mysql_query("SELECT namefic FROM propriete_fic WHERE idpropfic= '$id' ",$cnx);
Messages postés
66
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
29 novembre 2014
7
Merci toto pour cette réponse plutot devellopée!

J'ai fini par trouvé la solution :

$id est un nombre, j'ai donc ecris ma requete comme si desous :

mysql_query("SELECT namefic FROM propriete_fic WHERE idpropfic= $id ",$cnx);

C'est le plus simple je n'y avais pas pensé et ca fonctionne tres bien!
Elle a l'air très bien ta solution.
Ce que je ne comprends pas, c'est pourquoi ta solution c'est exactement la même requête que celle de ton problème.
Tu voudrais bien m'expliquer ?