You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确保MySQL连接失败时执行die函数而非返回HTTP 500错误

解决MySQL连接失败时触发500错误而非执行die的问题

核心原因

使用new mysqli()构造函数连接失败时,部分PHP配置会直接抛出致命错误(E_ERROR),导致脚本提前终止,无法执行后续的if ($conn->connect_error)判断和die语句,最终返回HTTP 500错误。

解决方案

1. 改用mysqli过程式连接函数

替换面向对象构造函数为mysqli_connect(),该函数连接失败时返回false,不会直接终止脚本,能确保错误处理代码正常执行:

$conn = mysqli_connect("localhost", "root", "WrongPassword", "todo");

if (!$conn) {
    die("Failed to connect to MySQL: (" . mysqli_connect_errno() . ") " . mysqli_connect_error());
}

2. 调试阶段开启PHP错误显示

在脚本开头添加以下代码,直接在页面显示具体错误信息,便于排查问题:

// 开启所有错误报告并强制显示
error_reporting(E_ALL);
ini_set('display_errors', 1);

$conn = new mysqli("localhost","root","AwesomePassword", "todo");

if ($conn->connect_error) {
    die ("Failed to connect to MySQL: (" . $conn->connect_errno . ") " . $conn->connect_error);
}

注意:生产环境必须关闭display_errors,避免泄露服务器敏感信息。

3. 启用mysqli异常模式(面向对象写法可选)

通过设置mysqli抛出异常,用try-catch块捕获连接错误:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
    $conn = new mysqli("localhost", "root", "WrongPassword", "todo");
} catch (mysqli_sql_exception $e) {
    die("Failed to connect to MySQL: (" . $e->getCode() . ") " . $e->getMessage());
}

内容的提问来源于stack exchange,提问作者Erkan Yilmaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 00:52:41