PDO登录持续显示false

时间:2013-09-28 14:03:23

标签: php mysql pdo

您好我正在使用php进行基本登录脚本。因为我不担心安全性,我只是想让它起作用。但由于某些原因,当数据库中存在值时,它会一直返回false。

编辑:connection.php包含登录数据库的信息。

$config['db'] = array(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'mywebsite'
);




$db = new PDO('mysql:host=' . $config['db']['host']. ';dbname=' . $config['db']['dbname'] , $config['db']['username'] , $config['db']['password']);

end of connection.php

if (isset($_POST['username']) && isset($_POST['password']))
{

    require_once 'Connection.php';
    $user = $_POST['username'];
    $pass = $_POST['password'];


        $sth = $db->prepare('SELECT `username` , `password` from `library` where `username`  = ? And `password` = ? ');

        $sth->bindParam(1, $user);
        $sth->bindParam(2, $pass);
        $sth->execute();

        if($sth->fetchColumn() > 0) {
            echo $user;
        } else {
            echo 'false';
        }
}
我在做错了什么?例如,为用户发送病毒,为密码发送123。哪个存在于我的库中,它返回false。

1 个答案:

答案 0 :(得分:2)

不要对列名称使用分隔符:

SELECT username, password FROM `library` WHERE username = ? AND password = ? 

您的if测试也是错误的。 PDOStatement::fetchColumn永远不会返回整数值,因此您需要更改:

if($sth->fetchColumn() > 0) {

为:

if($sth->fetchColumn() != false) {