0
我有一個名爲getUser
的方法,如果參數中提供的用戶名存在,它只會從數據庫中提取記錄。下面是方法:密碼被返回爲NULL ...?
public function getUser($username)
{
$userInfo = array(
'username' => $username
);
if (! $stmt = $this->Connection()->prepare("SELECT * FROM " . $this->_info['Prefix'] . "users
WHERE `".implode("`, `", array_keys($userInfo))."` = ?"))
{
echo 'Prepare Failed: ' . $stmt->error . '<br />';
return FALSE;
}
if (! $stmt->bind_param('s', $userInfo['username']))
{
echo 'Bind Failed: ' . $stmt->error . '<br />';
return FALSE;
}
if (! $stmt->execute())
{
echo 'Execute Failed: ' . $stmt->error . '<br />';
return FALSE;
}
$stmt->store_result();
if ($stmt->num_rows == 0)
{
$this->_user['exists'] = FALSE;
}
else
{
$this->_user['exists'] = TRUE;
}
$stmt->bind_result($username, $password);
$stmt->fetch();
$this->_user['username'] = $username;
$this->_user['password'] = $password;
$stmt->close();
return $this->_user;
}
正如你可以在方法的結尾看到我返回_user
陣列我在叫checkPassword
另一種方法使用。這是它出錯的地方,我的意思是密碼是NULL
。爲了確保這個查詢沒有錯誤,我輸出了用戶名(這是從getUser
方法返回的),它是正確的。所以我知道查詢正在執行並存儲值,但密碼正在以NULL
的形式返回。這裏是checkPassword
方法:
public function checkPassword($username, $password)
{
$info = $this->getUser($username);
if ($info['exists'] == FALSE) {
exit('The specified user does not exist!');
}
if (password_verify($password, $info['password']))
{
echo 'YAY';
}
else
{
echo 'NAY';
}
}
正如你可能已經猜到輸出我得到的是NAY
即使密碼是正確的。當我查看$info['password']
的值時,它只是NULL
。
爲什麼密碼被返回爲NULL
?