Page 1 sur 1

Problème avec un requête sql !

Posté : 15 août 2006, 21:59
par zenius
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.

Posté : 15 août 2006, 22:32
par charabia
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']."");

Posté : 16 août 2006, 09:00
par icebreak
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]'");

Posté : 16 août 2006, 09:30
par zeus
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 ;)

Posté : 17 août 2006, 14:28
par zenius
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 !

Posté : 19 août 2006, 19:15
par charabia
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.

Posté : 19 août 2006, 19:25
par albat
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é !");