2

PDOで苦労しています。PDOクラスを拡張しましたが、データベースへの接続でエラーが発生するたびに(パスワードが間違っているなど)、例外がキャッチされません。

現在のコードは次のとおりです。

public function __construct() {
    $dsn  = 'mysql:host=' . Config::host .
            ';dbname='    . Config::db;
    $user = Config::user;
    $pass = Config::pass;
    $opts = array(
        \PDO::ATTR_PERSISTENT => true,
        \PDO::ATTR_ERRMODE    => \PDO::ERRMODE_EXCEPTION 
    ); 

    try {
        parent::__construct($dsn, $user, $pass, $opts);
    } catch(PDOException $e) {
        echo $e->getMessage();
    }

}

表示されるエラーは次のとおりです。

Fatal error: Uncaught exception 'PDOException' with message 
'SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost'
(using password: YES)' in
/home/rasmus/www/n1_cms/N1/Core/Database.php on line 21

PDOException: SQLSTATE[HY000] [1045] Access denied for user
'root'@'localhost' (using password: YES) in
/home/rasmus/www/n1_cms/N1/Core/Database.php on line 21

編集:ソリューション

名前空間を使用しているため、機能しませんでした。

かわった:

catch(PDOException $e)

に:

catch(\PDOException $e)
4

2 に答える 2

2

クラス 'PDOException' が名前空間に存在しないようです。catch ブロックを変更してみてください:catch(\PDOException $e)

于 2012-05-12T18:43:30.217 に答える
0

try/catch を内部に移動しますparent::__construct($dsn, $user, $pass, $opts);

于 2012-05-12T18:38:02.457 に答える