PHP/SQL $_POST dans un WHERE

Résolu/Fermé
servietsky777 Messages postés 188 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 19 septembre 2013 - Modifié par servietsky777 le 13/07/2011 à 17:13
servietsky777 Messages postés 188 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 19 septembre 2013 - 22 juil. 2011 à 11:24
Bonjour,

Voilà mon code:
$reponse = $bdd->query('SELECT user, password FROM compte WHERE $_POST['user']'); 
$donnees = $reponse->fetch(); 
if($_POST['password'] == $donnees['password']){ 
echo 'test'; 
}


Et une autre solution qui ne fonctionne pas:
$reponse = $bdd->query('SELECT user, password FROM compte WHERE user= :user'); 
$prep->bindValue(':user', $_POST['user'], PDO::PARAM_STR); 
$donnees = $reponse->fetch(); 
if($_POST['password'] == $donnees['password']){ 
echo 'test'; 
}


Dans le premier cas il me fait une errer.
Dans le 2ème il n'en fait pas mais il n'affiche rien, enfaite la variable $donnees['password'] ne contien rien.

J'espère que vous pourrez m'aider à faire fonctionner ce code...

Merci d'avance


-----------
Servietsky

8 réponses

adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 154
18 juil. 2011 à 14:00
Il s'agit ici d'un problème de syntaxe ( du moins pour le dernier bout de code)

'SELECT user, password FROM compte WHERE user= $temp'


Avec cette chaine de caractère ta variable n'est pas interprétée.

essaie plutôt avec ceci

"SELECT user, password FROM compte WHERE user= $temp"


J'ai simplement changer les ' par des "

Adns
2
mario002e Messages postés 82 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 8 mai 2012 6
13 juil. 2011 à 18:21
essaye ce code voir ce que cela affiche:
$reponse = $bdd->query('SELECT user, password FROM compte WHERE user= :user'); 
$prep->bindValue(':user', $_POST['user'], PDO::PARAM_STR); 
$donnees = $reponse->fetch(); 
print "<pre>";
print_r($donnees);
print "</pre>";

pour voir le contenu du tableau. La fonction fetch retourne un tableau à 2 dimensions. La réponse serait peut être:
if($_POST['password'] == $donnees[0]['password']){ 
echo 'test'; 
}
0
servietsky777 Messages postés 188 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 19 septembre 2013 7
14 juil. 2011 à 14:01
Ton code me fait une erreur.

Enfaite même ce code fait une erreur maintenant:
$reponse = $bdd->query('SELECT user, password FROM compte WHERE user= :user'); 
$prep->bindValue(':user', $_POST['user'], PDO::PARAM_STR); 
$donnees = $reponse->fetch(); 
if($_POST['password'] == $donnees['password']){ 
echo 'test'; 
}
0
servietsky777 Messages postés 188 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 19 septembre 2013 7
Modifié par servietsky777 le 15/07/2011 à 12:26
Avec ce code là ça fonctionne:

$reponse = $bdd->query('SELECT user, password FROM compte WHERE user=\'drabble\'');  
$donnees = $reponse->fetch();  
echo $donnees['password'];


ça affiche correctement le mot de passe de l'utilisateur.
Le problème vient donc du :user

Une idée pour la solution?

Si jmais le site c'est http://buddhashop.toile-libre.org

Le nom de domaine est pourri, c'est juste temporaire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
servietsky777 Messages postés 188 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 19 septembre 2013 7
17 juil. 2011 à 13:29
up
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
17 juil. 2011 à 14:26
Bonjour,
Essai de remplacer le post par une variable.
0
servietsky777 Messages postés 188 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 19 septembre 2013 7
18 juil. 2011 à 13:03
J'ai essayé mais ça ne marche pas,
j'ai cette erreur:

Erreur : SQLSTATE[42S22]: Column not found: 1054 Unknown column '$temp' in 'where clause'


Avec ce code:

$temp = $_POST["user"];
$reponse = $bdd->query('SELECT user, password FROM compte WHERE user= $temp'); 
$donnees = $reponse->fetch(); 

if($_POST['password'] == $donnees['password']){
echo 'LOGIN REUSSI';
}



Merci

A+
0
servietsky777 Messages postés 188 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 19 septembre 2013 7
21 juil. 2011 à 13:20
UUp
0
adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 154
21 juil. 2011 à 13:27
relis la première réponse (celle que j'ai donné)
0
servietsky777 Messages postés 188 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 19 septembre 2013 7
21 juil. 2011 à 14:24
Ton code me fait aussi une erreur, j'ai essayé.
0
adns Messages postés 1094 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 27 mars 2012 154
21 juil. 2011 à 15:18
Le but n'est pas de copier coller bêtement le code fourni mais de le comprendre !

L'erreur généré ? avec le code en cours d'utilisation ?
0
servietsky777 Messages postés 188 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 19 septembre 2013 7
Modifié par servietsky777 le 22/07/2011 à 11:43
J'ai trouvé sur le site du zero.:
$reponse = $bdd->query("SELECT user, password FROM compte WHERE user= '" . $_POST['user'] . "'"); 

ça fonctionne.

Je comprend pas vrment par contre (une histoire d'array qui doit avoir des guillemets pour être une chaine de charactère).

Merci pour les réponses
A+
0