使用PDO登录失败并显示正确的信息

时间:2013-06-24 18:04:19

标签: 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还是新手,我想确保我做对了。谢谢您的帮助!

1 个答案:

答案 0 :(得分:4)

问题出在这里:

$query_unpw->$fetch

必须是:

$query_unpw->fetch()

这是一种方法,因此请跳过$符号。

我建议您在开发时使用ini_set('display_errors',“On”)。