PDO成功了,但什么都没有回报?

时间:2012-11-23 15:04:11

标签: php pdo

好的,所以我试图进入PDO。到目前为止,我喜欢它! :)但我刚刚遇到了一些事情,我无法理解它。

请考虑以下代码。将跟踪回声放入代码中,在catch中回声无效。所以那里没有错误(或者我认为)。如果我在execute()之后立即回显$ success,它会给我TRUE。所以现在,尝试在$ success成功的条件下进行跟踪,尝试打印$ userData或直接$ userID不返回任何内容。但是,打上你好世界的回声会打印出来。

我的下一步调试是什么?我假设如果我的SQL语句出现任何问题,那么它就会被捕获并显示出来,我就迷失了!

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
  } 

1 个答案:

答案 0 :(得分:3)

我猜错了:$Usernname应为$Username

在这一行:

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

这可能就是为什么它什么都不返回 - 你寻找的用户名基本上是一个空字符串。