[英]check if row exists with PDO
我在检查是否存在登录某人的行时遇到麻烦。使用密码+我正在使用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;
}
}
您的子查询似乎不正确(请参见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语句游标后,将其打开可能会导致数据库在以后的所有查询中均失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.