【问题标题】:catching a 'PDOException' when database is down数据库关闭时捕获“PDOException”
【发布时间】:2016-03-03 03:21:25
【问题描述】:

如果我无法连接到数据库(例如 xamp 关闭或数据库连接关闭等),我会尝试捕获错误。我尝试使用PDO::errorCode(),但没有产生任何结果。

在我的 php 中,我有一个 connection.php 和一个方法 ' 可以多次连接到数据库并返回一个新的 PDO 实例以实现各种查询。响应显示错误消息,然后显示调用它的所有 php 查询,其中还包括非加密格式的数据库的名称和密码。

  • 如何捕获此错误并将此错误消息替换为人类可读的替代方案(不显示名称和密码)?

连接.PHP

function connect()
{
    // set database server access variables:
    $host = "localhost";
    $user = "root";
    $pass = "password";
    $dbase = "dbName";

    //Establish a connection
    $db = new PDO("mysql:host=".$host."; dbname=".$dbase."", $user, $pass); //line 16
    $db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

    return $db;
}

回应

致命错误:带有消息的未捕获异常“PDOException” 'SQLSTATE[HY000] [2002] 无法建立连接,因为目标 机器主动拒绝了。 ' 在 D:\Users\Username\Dropbox\Web\htdocs\sitename\php\data\connection.php:16 堆栈跟踪:#0 D:\Users\Username\Dropbox\Web\htdocs\sitename\php\data\connection.php(16): PDO->__construct('mysql:host=loca...', 'root', 'password') #1 D:\Users\Username\Dropbox\Web\htdocs\sitename\php\function\active-user.php(28): 连接()#2 D:\Users\Username\Dropbox\Web\htdocs\sitename\map-floorplan.php(10): include('D:\Users\Username...') #3 {main} 抛出 D:\Users\Username\Dropbox\Web\htdocs\sitename\php\data\connection.php 第 16 行

【问题讨论】:

    标签: php mysql oop pdo exception-handling


    【解决方案1】:

    执行 try/catch 以捕获异常

    try{
        $db = new PDO("mysql:host=".$host."; dbname=".$dbase."", $user, $pass); //line 16
        $db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
        return $db;
    } catch( PDOException $e){
        $originalError = $e->getMessage();
        echo 'something went wrong.. '.$originalError; 
        exit;
    }
    

    【讨论】:

    • 谢谢...现在看起来很简单,只是不知道如何使用PDOException
    • 可以捕获从 Exception 或 Exception 类本身扩展的类。有关更多详细信息,请查看php.net/manual/en/language.exceptions.php 的文档
    猜你喜欢
    • 2021-07-25
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多