我有这个PHP函数获取当前登录的用户的数据,或者如果访问者没有登录,或者具有无效的user_id和password_hash cookie,则返回false。由于某种原因,$q->fetch()
总是返回FALSE。PHP PDO获取类返回FALSE
if($_COOKIE['cuid']!='' && $_COOKIE['cuph']!='')
{
try
{
$q = $db->prepare('SELECT * FROM users WHERE user_id = ? AND password = ?');
$data = array($_COOKIE['cuid'], $_COOKIE['cuph']); // id and password hash
$q->execute($data);
$num = count($q->fetchAll()); // in my case, $num is set to 1
if($num == 1)
{
$q->setFetchMode(PDO::FETCH_CLASS, 'User');
$user = $q->fetch(); // $user is set to FALSE for some reason
return $user;
} else {
return FALSE;
}
}
catch(Exception $e)
{
$db->rollBack();
echo 'Error: ' . $e->getMessage();
}
} else {
return FALSE;
}
运行与准确的数据,而不是在查询中的占位符不会改变任何东西,直接在我的数据库运行查询返回1行,像它应该。我检查,$ num确实等于1.我不知道为什么$q->fetch()
返回FALSE,所以任何指针将非常感激。
完美,谢谢! 另外,在大多数情况下,$ q-> rowCount()仅适用于DELETE,INSERT和UPDATE语句,因此它不是最可靠的选项。 – Fang