我在制作新的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。似乎无法解决这个问题。
答案 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;。
抱歉这个愚蠢的错误,但谢谢你的回答!