如何在PHP中的PDO中查找rowCount

时间:2018-09-22 06:28:37

标签: php pdo

我正在用php学习PDO准备语句。

我有一些错误。

public function check_user_validation($user_email,$user_password)
{
    $salt1 = "5g;;";
    $salt2 = "466UU$%jjh";
    $user_password = hash("sha512",$salt1.$user_password.$salt2);
    $result = $this->con->prepare("select id from user_table where user_email=:user_email&& user_password=:user_password");
    $result->execute([
        ':user_email' => '$user_email',
        ':user_password' => '$user_password',       
    ]);
    $result = $result->rowCount();
    if($result > 0)
    {
        $_SESSION['user_email'] = $user_email;
        header("Location:dashboard.php");
    }
    else
    {
        return FALSE;
    }
}

BUt它返回false。身份证和密码机器人是真实的。我认为rowCount()赋予它0的价值。

2 个答案:

答案 0 :(得分:1)

$result->execute([
    ':user_email' => $user_email,
    ':user_password' => $user_password,       
]);

您需要删除单引号以传递变量 $ user_email $ user_password

答案 1 :(得分:1)

PDO::rowCount不能保证适用于SELECT语句。最好尝试从查询中获取数据。您还有一个问题,就是将绑定参数用单引号引起来,这将意味着查询中的值是$user_email而不是例如me@example.com

$result = $this->con->prepare("select id from user_table where user_email=:user_email&& user_password=:user_password");
$result->execute([
    ':user_email' => $user_email,
    ':user_password' => $user_password,       
]);
if ($result->fetchColumn() !== false)
{
    $_SESSION['user_email'] = $user_email;
    header("Location:dashboard.php");
}
else
{
    return FALSE;
}