我无法检查是否存在记录某人的行。 密码使用密码+电子邮件在数据库中加密 我正在使用PDO。
function is_valid_developer($username, $password)
{
global $db;
$query = 'SELECT COUNT(*) FROM users WHERE username = :username AND password = sha(CONCAT(:password,(SELECT email FROM users WHERE username = :password))) AND developer = true';
$statement = $db->prepare($query);
$statement->bindValue(':username', $username);
$statement->bindValue(':password', $password);
$statement->execute();
$count = $statement->fetchColumn();
if ($count === 1)
{
return TRUE;
}
else
{
return FALSE;
}
}
答案 0 :(得分:4)
您的子查询似乎不正确(请参阅WHERE username = :password
子句),并且可能永远不会返回任何结果。此外,PDO不支持使用相同的绑定参数两次(您使用:password
两次)。除此之外,你根本不需要子查询;试试这个查询:
SELECT COUNT(*) FROM users
WHERE username = :username
AND password = sha(CONCAT(:password, email))
AND developer;
此外,请务必在致电$statement->closeCursor()
后致电$statement->fetchColumn()
;在完成PDO语句游标之后将其打开可能会导致数据库在所有将来的查询上失败。