gpt4 book ai didi

php - PDO 捕获 PDOException 错误

转载 作者:行者123 更新时间:2023-11-29 04:36:37 24 4
gpt4 key购买 nike

如果连接有效,它工作得很好,但如果连接失败,PDOException 似乎实际上不起作用。捕获完全无法执行。如果失败,它会中断此行 $this->dbh = new PDO("$db_driver:host=$db_host;dbname=$db_name", $db_user, $db_pass); 的执行。所以我无法在 catch block 中获取 PDOException。我如何让它继续工作?

<?php

namespace app\Helpers;

use \PDO;

/**
* Core class which exists only once through the application
*
*/
class Core
{
public $dbh; // handle of the db connexion
private static $instance;

// constructor to create a MySQLi instance (="MySQL Improved Extension")
private function __construct()
{

$db_host = ConfigHelper::read('db.host');
$db_name = ConfigHelper::read('db.basename');
$db_user = ConfigHelper::read('db.user');
$db_pass = ConfigHelper::read('db.password');
$db_driver = ConfigHelper::read('db.driver');
try {
$this->dbh = new PDO("$db_driver:host=$db_host;dbname=$db_name", $db_user, $db_pass);
} catch (PDOException $pdoex) {
exit("Database connection failed: " . $pdoex->getMessage());
return false;
}

}
/**
* get instance of Core object
*
* @return Object self
*/
public static function getInstance()
{
if (!isset(self::$instance)) {
$object = __CLASS__;
self::$instance = new $object;
}
return self::$instance;
}

}

最佳答案

这是一个命名空间问题。

在命名空间中时,您必须通过在其前面加上反斜杠来寻址每个根级类名。

但你没有。

但最糟糕的是您根本不应该捕获 PDOException。就leave it alone and let it report to a site-wide report handler

关于php - PDO 捕获 PDOException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39826052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com