gpt4 book ai didi

php - 在 mysqli 中尝试/捕获

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:18 24 4
gpt4 key购买 nike

我正在学习 OOP mysqli 类(class)。连接到数据库时,他们使用以下脚本:

$db = new mysqli("host", "user", "password", "database");
if ($db->connect_error){
$error = $db->connect_error;
echo("Not connected: " . $error);
}

不过后来,他们用 try/catch block 调用数据库连接文件:

try {
require_once "connection.php";
}catch (Exception $e){
$error = $e->getMessage();
echo $error;
}

尝试连接后,连接文件不会立即处理可能的连接错误吗? try/catch block 基本上做同样的事情吗?还是 try/catch block 在寻找不同类型的错误?

更新:只是为了澄清,在阅读了一些答案之后。当我这样做时:

try {
$db = new mysqli("host", "user", "password", "database");
}catch (Exception $e){
$error = $e->getMessage();
echo $error;
}

假设数据库访问数据错误(例如主机错误),我会收到 PHP 警告,但不会在 catch block 中输出错误。 catch 不应该检测到这个错误吗?

最佳答案

如果您需要使用 try/catch block 捕获 mysqli 扩展上的异常,请尝试此代码(打开异常模式而不是经典错误报告):

// Method 1:
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_STRICT | MYSQLI_REPORT_ERROR;

// OR Method 2:
mysqli_report(MYSQLI_REPORT_STRICT | MYSQLI_REPORT_ALL);

try {
$db = new mysqli("host", "user", "password", "database");
} catch (mysqli_sql_exception $e) {
...
}

mysqli_sql_exception mysqli_driver

关于php - 在 mysqli 中尝试/捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27345377/

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