【问题标题】:PDO Connection not showing all errorsPDO 连接未显示所有错误
【发布时间】:2015-04-03 09:52:00
【问题描述】:

在建立新的 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。似乎无法弄清楚这一点。

【问题讨论】:

    标签: php mysql exception pdo


    【解决方案1】:

    我忽略了一个简单的错误。我有“mysql:{$host}”而不是“mysql:host={$host}”。

    抱歉犯了愚蠢的错误,但感谢您的回答!

    【讨论】:

      【解决方案2】:

      变化:

      $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;
      

      【讨论】:

        猜你喜欢
        • 2021-06-04
        • 2014-04-09
        • 2016-03-29
        • 1970-01-01
        • 2013-03-15
        • 2016-04-15
        • 1970-01-01
        • 2012-09-22
        • 1970-01-01
        相关资源
        最近更新 更多