Problème avec un requête sql !

Petit nouveau ! | 2 Messages

15 août 2006, 21:59

Bonjour !
Pouvez-vous me dire si la requête suivante est exact ?

Code : Tout sélectionner

mysql_query('SELECT * FROM stock WHERE id="$_SESSION['ref_modif']"');
Je crois que c'est au niveau de la concaténation qu'il y a un problème (j'espère que je ne raconte pas de conneries en confondant concaténation avec autre chose!).

La variable $_SESSION['ref_modif'] a été obtenue grace à un formulaire puis transmise grace à une session, c'est une variable qui contient un chiffre ...

la première partie du script apparait mais la partie qui requiére une réponse de la base de donnée ne fonctionne pas.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

15 août 2006, 22:32

id est un type numérique ou pas ? Si oui ne met pas de quote simple comme j'ai fait là :
mysql_query("SELECT * FROM stock WHERE id=".$_SESSION['ref_modif']."");

Eléphant du PHP | 124 Messages

16 août 2006, 09:00

Même en type numérique, les quotes ne changeront rien.
De plus il vaut mieux les y mettre pour éviter qu'on puisse y rentrer autre chose.

Non, l'erreur vient de là.
mysql_query('SELECT * FROM stock WHERE id="$_SESSION['ref_modif']"');
Les simples quotes annihilent toujours une variables.

Tu as donc le choix entre
mysql_query('SELECT * FROM stock WHERE id="'.$_SESSION['ref_modif'].'"');
et
mysql_query("SELECT * FROM stock WHERE id='$_SESSION[ref_modif]'");

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 août 2006, 09:30

mysql_query("SELECT * FROM stock WHERE id='$_SESSION[ref_modif]'");
Ce genre d'écriture est extremement déconseillé à cause des index des tableaux. L'exemple le plus parlant est cet exemple puisqu'il manque les ' ou les " autour de l'index du tableau ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 2 Messages

17 août 2006, 14:28

Merci pour vos réponses !
j'ai tout testé mais aucune ne fonctionne, l'erreur se trouve peut être à un autre niveau!

Pouvez vous me dire qu'elle serait le code si je voulez afficher les données d'une table uniquement quand ref = à la variable indiquée par le formulaire (name=ref).

merci !

Avatar du membre
ViPHP
ViPHP | 3008 Messages

19 août 2006, 19:15

C'est bien ce qu'on t'a indiqué plus haut pour faire ça.

Quand tu dis ça ne marche pas qu'est-ce exactement ? Erreur ? Page blanche ?

Donnes nous un code plus complet pour qu'on puisse voir d'où vient ton erreur.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

19 août 2006, 19:25

Pour coder polus propre et pouvoir débugger plus facilement,
je te conseille de fractionner par étapes :
// je crée ma requête SQL
$req = "SELECT * FROM stock WHERE id=".$_SESSION['ref_modif']; 

// en mode développement, je teste la requête créée
echo "La requête générée est : ",$req;

// si la requête est correcte, je lance son exécution
$res = mysql_query($req) or die("Planté !");