PHP/SQL $_POST dans un WHERE

Résolu
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

  1. 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
    1. 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'; 
      }
      
      1. 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'; 
        }
        1. 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.
          1. 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+
            1. UUp
            2. relis la première réponse (celle que j'ai donné)
            3. Ton code me fait aussi une erreur, j'ai essayé.
            4. 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 ?
          2. 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+