【发布时间】:2015-04-26 06:23:24
【问题描述】:
我变得非常沮丧。我有两个具有相似“指令”的函数,即:从数据库中的用户表返回值。
第二个工作正常,但是第一个返回一个空值。
代码如下:
public function ValidateUser($username, $password)
{
$stmt = "SELECT password FROM users WHERE username = :username LIMIT 1";
if(!($grabUser = $this->db->prepare($stmt)))
{
return null;
}
$grabUser->bindParam(":username", $username, PDO::PARAM_STR);
$grabUser->execute();
$data = $grabUser->fetch();
if(count($grabUser->fetchColumn()) <= 0)
{
return null;
}
echo $data['password'].'s';
if(!password_verify($password,$data['password']))
{
return null;
}
return $this->core->encrypt($data['password']);
}
我试图在页面上显示 $data['password'] 只是为了测试它是否从数据库返回一个值,但是它只是返回空,而查询 is返回一列,因为它通过了
if(count($grabUser->fetchColumn()) <= 0)
{
return null;
}
条件。
$username 和 $password 变量都设置好了,所以没有问题。
以防万一你问,这是确实正常工作的功能:
public function ValidateFacebookUser($email, $fid)
{
$stmt = "SELECT username, password FROM users WHERE email_address = :email AND connected_fb = '1' AND connected_fb_id = :fb LIMIT 1";
if(!($grabUser = $this->db->prepare($stmt)))
{
return null;
}
$grabUser->bindParam(":email", $email, PDO::PARAM_STR);
$grabUser->bindParam(":fb", $fid, PDO::PARAM_INT);
$grabUser->execute();
$data = $grabUser->fetch();
if(count($grabUser->fetchColumn()) <= 0)
{
return null;
}
return array($data['username'], $this->core->encrypt($data['password']));
}
它确实会为这种情况转换用户名和密码。为什么它在第一个功能中不起作用?
谢谢。
【问题讨论】:
-
如果你在 phpMyAdmin 之类的东西中使用它,是否有数据返回?