PHP/SQL $_POST dans un WHERE
Résolu
servietsky777
Messages postés
256
Statut
Membre
-
servietsky777 Messages postés 256 Statut Membre -
servietsky777 Messages postés 256 Statut Membre -
Bonjour,
Voilà mon code:
Et une autre solution qui ne fonctionne pas:
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
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
-
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 -
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'; } -
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'; } -
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. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Bonjour,
Essai de remplacer le post par une variable. -
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+ -
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+