2013-10-28 37 views
0

我没有收到任何错误消息,但我也没有从这个查询中得到任何结果。我只是想获得与提供的电子邮件相关的密码哈希值。我究竟做错了什么?PDO fetch()没有错误,但没有结果

$selectEmailStmt = $DBH->prepare("SELECT passHash FROM userbasicinfo WHERE email=?"); 
$selectEmailStmt->bindParam(1, $email); 
$email = $_POST['email']; 
$selectEmailStmt->execute(); 
$selectEmailStmt->setFetchMode(PDO::FETCH_ASSOC); 
$result = $selectEmailStmt->fetch(); 


echo $result; 
+1

您需要/声明'$ email = $ _POST ['email'];'顶部 –

+3

否...不,您不要@ Fred-ii-参数通过引用传递。 – Neal

+1

@尼尔哦,怎么样?由于'$ selectEmailStmt-> bindParam(1,$ email);'和'$ email = $ _POST ['email'];''你会认为'$ email'没有被声明,在它下面。 –

回答

0

没有错误

的错误不会只是单独出现。你必须配置你的环境来报告它们。
在这里你的代码被无用的语句取代,并添加错误报告。

ini_set('display_errors',1); 
error_reporting(E_ALL); 
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$sql = "SELECT passHash FROM userbasicinfo WHERE email=?"; 
$pass = $DBH->prepare($sql)->execute([$_POST['email']])->fetchColumn(); 
var_dump($pass, $_POST['email']); 

如果仍然没有结果 - 那么表中没有这样的电子邮件。

+0

我用这段代码,它返回了没有问题的散列。我仍然不明白为什么我的工作不正常。 – steele

+0

将错误报告部分添加到您的代码并查看 –

相关问题