PDO Connection未显示所有错误

时间:2015-02-04 01:15:36

标签: php mysql exception pdo

我在制作新的PDO连接时遇到显示错误的问题。如果我在配置文件中输入了错误的密码,它只显示错误。它不会显示错误的数据库名称,用户名或主机的错误。

<?php
// config file
return [
    'driver'    =>  'mysql',
    'host'      =>  'localhost',
    'database'  =>  'query_test',
    'username'  =>  'root',
    'password'  =>  '',
    'options'   => [
        PDO::ATTR_ERRMODE               => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE    => PDO::FETCH_CLASS,
        PDO::ATTR_EMULATE_PREPARES      => false
    ]
];

// connector file    
use PDO;

    class MySqlConnector implements ConnectorInterface
    {
        public function connect(array $config)
        {
            extract($config);
            $dsn = "mysql:{$host};dbname={$database}";
            $connection = new PDO($dsn, $username, $password, $options);
            return $connection;
        }
    }

我尝试过使用try / catch块以及设置ini显示错误和错误报告E_ALL。似乎无法解决这个问题。

2 个答案:

答案 0 :(得分:0)

变化:

$connection = new PDO($dsn, $username, $password, $options);
return $connection;

为:

try {
    $connection = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);
    $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}
return $connection;

答案 1 :(得分:0)

我忽略了一个简单的错误。我有&#34; mysql:{$ host}&#34;而不是&#34; mysql:host = {$ host}&#34;。

抱歉这个愚蠢的错误,但谢谢你的回答!