2 votes

PDO réussit, mais ne renvoie rien ?

J'essaie de me familiariser avec PDO. Pour l'instant, j'adore ! :) Mais je viens de rencontrer quelque chose que je n'arrive pas à comprendre.

Considérons donc le code ci-dessous. La mise en place d'échos de traçage dans le code, à l'intérieur du catch n'échappe rien. Il n'y a donc pas d'erreur à ce niveau (c'est du moins ce que je pense). Si j'affiche $success juste après execute(), je reçois TRUE. Donc maintenant, en essayant de tracer dans la condition de $success, en essayant d'imprimer $userData ou directement $userID, je n'obtiens rien. Mais en mettant un écho de hello world, cela s'affichera.

Quelle serait la prochaine étape de débogage ? Je suppose que s'il y avait un problème avec ma déclaration SQL, il serait détecté et montré aussi, donc, je suis perdu !

try 
  { 
     $dbh = DatabaseHelpers::getDatabaseConnection(); 

     $stmt = $dbh->prepare('SELECT UserId FROM Users WHERE ' 
             . 'Username=:Username ' 
             . 'AND Password=:hashedPassword ' 
             . 'LIMIT 1'); 

     $hashedPassword = DatabaseHelpers::passHash ($password); 

     $stmt->bindParam(':Username', $Usernname, PDO::PARAM_STR); 
     $stmt->bindParam(':hashedPassword', $hashedPassword, PDO::PARAM_STR); 

     $success = $stmt->execute(); 

     if ($success) 
     { 
        $userData = $stmt->fetch(); 
        $userID = $userData['UserId']; 
     } 

     $dbh = null; 
  } 
  catch (PDOException $e) 
  { 
     $e
  }

3voto

kapa Points 41886

Je suppose qu'il y a une faute de frappe : $Usernname devrait être $Username .

Dans cette ligne :

$stmt->bindParam(':Username', $Usernname, PDO::PARAM_STR);

C'est peut-être la raison pour laquelle il ne renvoie rien - le nom d'utilisateur que vous recherchez sera en fait une chaîne vide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X