为什么PDO查询在服务器上不起作用?

时间:2018-12-21 16:45:39

标签: php mysql forms pdo md5

我刚刚将本地项目上载到服务器,但是PDO查询在LIVE服务器中不起作用。在本地运行正常。我以为PDO可能未安装在服务器上,所以我运行了以下脚本

服务器中的PHP版本为PHP Version 5.3.3,Linux服务器中的

<?php
if (!defined('PDO::ATTR_DRIVER_NAME')) {
    echo 'PDO unavailable';
}else{
    echo 'pdo is installed';
}
?>

Connection.php:

<?php
    try{
        $pdo = new PDO('mysql: host=localhost; dbname12', 'myusername', 'password');
    }catch(PDOException $e){
        exit('Database Error');
    }

?>

登录:

<?php
session_start();
include_once('../includes/connection.php');
if(isset($_POST['user_name'], $_POST['user_password'])){
    $username = $_POST['user_name'];
    $password = md5($_POST['user_password']);

    if(empty($username) or empty($password)){
        $error = 'All fields are required!';
    }else {
        $query = $pdo->prepare("SELECT * FROM users WHERE user_name = ? AND user_password = ?");
        $query->bindValue(1, $username);
        $query->bindValue(2, $password);
        $query->execute();
        //var_dump($query);exit;
        $num = $query->rowCount();

        if ($num == 1) {
            // User correct details let's log him in
            $_SESSION['logged_in'] = true;

            header('Location: dashboard.php');
            exit();
        } else {
            $error = 'Incorrect Details';
        }
    }
}
?>

通过输入正确的凭据,登录名显示为incorrect details always +为了进行调试,我绕过了登录名,进入了仪表板,在仪表板中,我们从数据库中获取文章,但没有任何内容。在数据库中,我们有很多条目。

1 个答案:

答案 0 :(得分:0)

好吧,我不知道这是否是一个错误,但是将dbname=dbname12添加到下面的行中,一切开始起作用!

$pdo = new PDO('mysql: host=localhost; dbname=dbname12', 'myusername', 'password');

在本地使用下面的代码可以正常工作,但是在服务器上,当我添加dbname然后查询开始工作时。

$pdo = new PDO('mysql: host=localhost; dbname12', 'myusername', 'password');