PHP/SQL $_POST dans un WHERE

Résolu
servietsky777 Messages postés 256 Statut Membre -  
servietsky777 Messages postés 256 Statut Membre -
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. adns Messages postés 1152 Statut Membre 153
     
    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
  2. mario002e Messages postés 95 Statut Membre 6
     
    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
  3. servietsky777 Messages postés 256 Statut Membre 7
     
    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
  4. servietsky777 Messages postés 256 Statut Membre 7
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. servietsky777 Messages postés 256 Statut Membre 7
     
    up
    0
  7. MastercroW Messages postés 1259 Date d'inscription   Statut Membre Dernière intervention   163
     
    Bonjour,
    Essai de remplacer le post par une variable.
    0
  8. servietsky777 Messages postés 256 Statut Membre 7
     
    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. servietsky777 Messages postés 256 Statut Membre 7
       
      UUp
      0
    2. adns Messages postés 1152 Statut Membre 153
       
      relis la première réponse (celle que j'ai donné)
      0
    3. servietsky777 Messages postés 256 Statut Membre 7
       
      Ton code me fait aussi une erreur, j'ai essayé.
      0
    4. adns Messages postés 1152 Statut Membre 153
       
      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
  9. servietsky777 Messages postés 256 Statut Membre 7
     
    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