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. 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
      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. Bonjour,
        Essai de remplacer le post par une variable.
        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. 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. 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