php - PDO登录一直显示错误

标签 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']);

连接结束.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';
        }
}

我做错了什么?例如,我将发送用户 test 和密码 123。它存在于我的库中并且返回 false。

最佳答案

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

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

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

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

至:

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

关于php - PDO登录一直显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19067815/

相关文章:

php - 使用复合键计算数据

php - 回显重复列值的详细信息

javascript - JQuery Ajax 不向 PHP 发送数据

php - 不同的包装背景图像 wordpress 自定义模板

php - 基于PHP域的许可系统

php - MySQL:AND + 参数选择和跳过问题

php - PDO 多个命名占位符不检索数据

php - 发送长数据字符集失败

mysql - 查询中函数的 IN 运算符的替代或替换 IN 运算符?

PHP PDO 获取对象转换为字符串