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