0

您好,我正在使用 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']);

连接结束.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。

4

1 回答 1

2

不要对列名使用分隔符:

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

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

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

到:

if($sth->fetchColumn() != false) {
于 2013-09-28T14:06:01.400 回答