我有這個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