php - 代码不会在 else 语句中显示错误信息

标签 php mysql pdo authentication

我的基本登录示例有点问题。当用户名和密码组合不正确时,else 语句中的错误消息不会显示。是因为 while 循环吗?我需要帮助。

<?php

$db = new PDO('mysql:host=127.0.0.1;dbname=project', 'root', '');

if(isset($_POST['username'], $_POST['password'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    $result = $db->query("SELECT * FROM users WHERE username='$username' AND password='$password'");

    if(empty($username) || empty($password)) {
        echo 'Empty';
    }

    while($row = $result->fetch(PDO::FETCH_OBJ)) {
        if($username == $row->username && $password == $row->password) {
            echo 'Logged in';
        } else {
            echo 'Incorrect username and password combination';
        }
    }
}

最佳答案

无需重新检查查询结果。因为,如果查询成功,那么fetch()函数将返回结果行,否则返回false。

更改以下代码

while($row = $result->fetch(PDO::FETCH_OBJ)) {
    if($username == $row->username && $password == $row->password) {
        echo 'Logged in';
    } else {
        echo 'Incorrect username and password combination';
    }
}

$row = $result->fetch(PDO::FETCH_OBJ);
if($row){
  echo 'Logged in';
}else{
  echo 'Incorrect username and password combination';
}

注意 username 字段应该是唯一的列,因为您的登录目的。

关于php - 代码不会在 else 语句中显示错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39954634/

相关文章:

mysql - Symfony2 : How to flush multiple rows in database in one query

php - 删除 PDO 语句行整数键和相对值的智能方法

php - pdo/json longtext 有时返回为 null

php - WordPress 查询拥有 2 个相等元的用户

javascript - 如何在用户喜欢 MVC 架构中的推文后使用 AJAX 调用显示推文的点赞计数

php - mysql从while外部获取数据

php - 有没有办法更改 SwiftMailer 中 header 的编码?

mysql - Gorm First或创造理解

python mysql connector - 多个查询的正确方法是什么

php - 使用 PDO 查询的 SQL 表中的项目