好的,所以我试图进入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
}
答案 0 :(得分:3)
我猜错了:$Usernname
应为$Username
。
在这一行:
$stmt->bindParam(':Username', $Usernname, PDO::PARAM_STR);
这可能就是为什么它什么都不返回 - 你寻找的用户名基本上是一个空字符串。