Как найти rowCount в pdo подготовить в php - PullRequest
0 голосов
/ 22 сентября 2018

Я изучаю оператор подготовки PDO на php.

У меня есть какая-то ошибка.

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;
    }
}

Но она возвращает false.Идентификатор и пароль бота верны.Я думаю rowCount() давая ему 0 значение.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

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;
}
0 голосов
/ 22 сентября 2018
$result->execute([
    ':user_email' => $user_email,
    ':user_password' => $user_password,       
]);

Вам нужно удалить одинарные кавычки, чтобы передать переменные, $ user_email и $ user_password .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...