繁体   English   中英

检查行是否与PDO存在

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM