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 回答