problème variable POST dans SELECT

Eléphanteau du PHP | 37 Messages

15 déc. 2011, 17:00

Bonjour,

Voila mon problème :
$sql = "SELECT `id` , `name` 
FROM `player` 
WHERE `name` = 'ploupy'
";
$result = mysql_query($sql) or die (""); 
while ($donnee = mysql_fetch_array($result)) {
echo '.$donnee["id"].'
La, aucun problème. Par contre lorsque je change cette ligne :
WHERE `name` = 'ploupy'
par cette ligne :
WHERE `name` = $login
cela ne marche pas.

ps :
$login = $_POST['LOGIN'];


je pense que cela viens du fait que $login n'est pas un nombre mais un string, bref j'ai une erreur sur la page (page vierge)

ViPHP
ViPHP | 2577 Messages

15 déc. 2011, 17:05

Si tu fais un echo de $sql, tu verras que ta requete est devenu : where login = Youpi au lieu de where login = 'Youpi'

Eléphanteau du PHP | 37 Messages

15 déc. 2011, 17:07

bonjour , merci pour ta réponse mais je n'ai pas compris ??
aucun de mes champs se nomes 'login'

'ploupy' c'est juste un exemple.


j'ai un soucis quand je met une variable post

Eléphanteau du PHP | 15 Messages

15 déc. 2011, 17:15

Salut,

Ce que veut dire mazarini, c'est qu'en écrivant :
WHERE `name` = $login

Tu n'a plus de quote qui encadre ton login.

il faut donc que tu les rajoute dans ta requête.
Comme ceci par exemple :

WHERE `name` = '".$login."'";

Ton hypothèse de départ était donc la bonne.

ViPHP
ViPHP | 2577 Messages

15 déc. 2011, 17:19

$sql = "SELECT `id` , `name` FROM `player` WHERE `name` = '$login' "
Il y a remplacement de la variable par sa valeur. Il faut donc mettre les quotes autour de la variable de la même façon que tu les avais mis autour de ploupy avant de le remplacer par une variable.

Edit : ton analyse du problème était tout a fait correct comme dit si dessus. Il faut que tu comprennes que le $sql contient la chaine de caractères avec l'ordre et qu'il n'y a pas plus de lien avec la variable une fois la chaine faite (pas sur d'être plus clair^^). C'est différent de certains langages ou l'on lie des variables avec des requetes (ce qui peut aussi etre fait avec php).
Modifié en dernier par Mazarini le 15 déc. 2011, 17:27, modifié 1 fois.

Eléphanteau du PHP | 37 Messages

15 déc. 2011, 17:22

non.
cela me fait une erreur

j'ai essai
WHERE `name` = '".$login."'".
et ca aussi
WHERE `name` = '".$login."'"
car je ne savais pas si le . était ta ponctuation ou du code , mais j'ai une erreur !!
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING

Eléphanteau du PHP | 15 Messages

15 déc. 2011, 17:28

Cette erreur est renvoyé par ton Echo je suppose non ?
Pourquoi encadre tu ton echo avec des quotes ....?

Ceci suffit : echo $donnee["id"];

Eléphanteau du PHP | 37 Messages

15 déc. 2011, 17:28

[quote="Mazarini"]
$sql = "SELECT `id` , `name` FROM `player` WHERE `name` = '$login' "
J'y avais même pas pensé !!!!


Et bien je te remercie beaucoup ça marche.
:P :P :P :P :P :P :P

ViPHP
ViPHP | 2577 Messages

15 déc. 2011, 17:30

manque le ; à la fin ?
(je l'ai oublié aussi)