php - 使用 PDO 的正确信息登录失败

标签 php mysql sql pdo

我将我的登录页面转换为使用 PDO 但现在它不起作用。我已经遍历了各种代码示例,但我无法弄清楚我哪里出错了。这对我来说很完美。错误报告也完全启用,但我没有收到任何错误。我刚刚收到页面“配置不正确”的浏览器错误。仅供引用,这是一个 SQL db

//代码

<?php

require ("../Android/connect_db.php");    

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

try {
    $query_unpw = $db->prepare("
        SELECT member_mast.company_name 
        FROM member_mast 
        WHERE username = ? 
        AND password = ?
    ");

    //$username = $_POST['username'];
    //$password = $_POST['password'];
    $username = 'abc';
    $password = 'abc';
    $name = "name";

    $query_unpw->bindValue(1, $username, PDO::PARAM_STR);
    $query_unpw->bindValue(2, $password, PDO::PARAM_STR);   

    $query_unpw->execute();

    $count = $query_unpw->rowCount();

    if ($count > 0) {
        while ($row = $query_unpw->$fetch(PDO::FETCH_ASSOC)) {          
                $name = $row['company_name'];               
        }
        echo $name;     
    } else {
        echo "Username/Password is invalid"; 
    }

} catch(PDOException $e) {
    die($e->getMessage());
}

?>

现在我在注释掉不同的代码段后唯一能弄清楚的是,如果我像这样注释掉用户名和密码

//$username = 'abc';
//$password = 'abc';

然后页面加载,只给我 else 回显“用户名/密码无效”。但是我不认为我使用它们是错误的,我知道它们是正确的。所以显而易见的问题是我是瞎子吗,这里出了什么问题?额外的问题是,因为我将对这些变量使用 _POST ,所以我是否正确地清理了用户输入? PDO 仍然很新,我想确保我做的是正确的。谢谢您的帮助!

最佳答案

问题在这里:

$query_unpw->$fetch

必须是:

$query_unpw->fetch()

这是一个方法,所以跳过 $ 符号。

我建议你在开发时使用 ini_set('display_errors', "On")。

关于php - 使用 PDO 的正确信息登录失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17282016/

相关文章:

sql - mysql查询将数据从转储导入现有数据并覆盖新条目

php - 查询后如何通过 PHP 对 SQL 行进行分组或标记

javascript - 使用 fopen 复制 html 页面并检查新页面以查找 session 变量

MySQL 按字母数字排序不起作用

php - 评论表未进入数据库

php - 带外键的 Laravel 存储模型

mysql - 有计数不起作用

sql - 如何处理postgresql函数中的单引号

php - 如何使用 Codeigniter 中的分页库为数据表提供正确的分页

php - (让进程运行直到完成,浏览器关闭后)