Rechercher : dans
Par :

[PHP] inclure variable dans requête SQL

Dernière réponse le 16 fév 2009 à 16:43:27 le coin-coin, le 13 fév 2009 à 11:19:03 
 Signaler ce message aux modérateurs

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!!

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « [PHP] inclure variable dans requête SQL » dans :
PHP - Les variables VoirConcept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...
PHP - Les variables d'environnement VoirNotion de variable d'environnement Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script...

1

chamhi, le 13 fév 2009 à 11:24:35

Vous avez connecté au base de données

Répondre à chamhi

2

toto, le 13 fév 2009 à 11:56:59

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);

Répondre à toto

3

le coin-coin, le 16 fév 2009 à 16:25:54

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!

Répondre à le coin-coin

4

 toto, le 16 fév 2009 à 16:43:27

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 ?

Répondre à toto
Collection CommentÇaMarche.net