что плохого в моем коде, что метод подсчета строк не возвращает затронутую строку?

0

Я работаю над формой входа в систему, используя PDO. Я использовал метод извлечения для возврата пользовательских данных из базы данных. А затем используйте метод rowCount для подсчета затронутой строки и сохранения ее в переменной count. Но переменная count по-прежнему остается нулевой и переходит к другой части моего кода.

Это функция входа



public function login($email, $password){
    $password1 = md5($password);
    $stmt = $this->pdo->prepare("SELECT 'user_id' FROM 'users' WHERE 'email' = 
    :email AND 'password' = :password");

    $stmt->bindparam(":email", $email, PDO::PARAM_STR);
    $stmt->bindparam(":password", $password1, PDO::PARAM_STR);
    $stmt->execute();

    $user = $stmt->fetch(PDO::FETCH_OBJ);
    $count = $stmt->rowCount();

    if ($count > 0) {
    $_SESSION['user_id'] = $user->user_id;
    header('Location: home.php');
    }else{
    return false;
    }
}

Я ожидаю перейти на home.php, который я определил в условии if.

Теги:

1 ответ

0

Для большинства баз данных PDOStatement::rowCount() не возвращает количество строк, затронутых оператором SELECT. Вместо этого используйте PDO::query() чтобы выдать SELECT COUNT(*) с теми же предикатами, что и предполагаемый оператор SELECT, а затем используйте PDOStatement::fetchColumn() чтобы получить количество строк, которые будут возвращены. Ваше приложение может затем выполнить правильное действие

public function login($email, $password){
$password1 = md5($password);
$stmt = $this->pdo->prepare("SELECT 'user_id' FROM 'users' WHERE 'email' = 
:email AND 'password' = :password");

$stmt->bindparam(":email", $email, PDO::PARAM_STR);
$stmt->bindparam(":password", $password1, PDO::PARAM_STR);
$stmt->execute();

$user = $stmt->fetch(PDO::FETCH_OBJ);
$count = $stmt->fetchColumn();//change here

if ($count > 0) {
$_SESSION['user_id'] = $user->user_id;
header('Location: home.php');
}else{
return false;
 }
}
  • 0
    не могли бы вы показать мне, как написать это. Я новичок в php.
  • 0
    Я обновил всю функцию
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню