2

好的,所以我正试图深入了解 PDO。到目前为止,我喜欢它!:) 但我只是遇到了一些事情,我不太明白。

所以考虑下面的代码。将跟踪回声放在代码中,在 catch 内没有回声。所以那里没有错误(或者我认为)。如果我在执行()之后立即回显 $success,它会给我 TRUE。所以现在,尝试在 $success 的条件下进行跟踪,尝试打印 $userData 或直接 $userID 什么都不返回。但是放一个 hello world 的回声会打印出这个东西。

我下一步要调试什么?我假设如果我的 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
  } 
4

1 回答 1

3

我猜你这里有一个错字:$Usernname应该是$Username.

在这一行:

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

这可能就是它什么都不返回的原因——您要查找的用户名基本上是一个空字符串。

于 2012-11-23T15:06:04.930 回答