当前位置: 首页> 最新文章列表> 遇到连接失败时,如何通过 mysqli::$server_info 获取 MySQL 服务器信息并处理?

遇到连接失败时,如何通过 mysqli::$server_info 获取 MySQL 服务器信息并处理?

gitbox 2025-06-11

在使用 PHP 的 mysqli 扩展连接 MySQL 数据库时,遇到连接失败是很常见的情况。通常我们通过检查连接错误码和错误信息来判断具体原因,但有时我们也希望获取服务器的一些信息以辅助诊断,比如 MySQL 服务器版本等。

本文将讲解如何使用 mysqli 类的 $server_info 属性在连接成功后获取服务器信息,并结合连接失败时的处理方法,帮助你更好地掌握数据库连接状态。


1. 连接 MySQL 的基本示例

首先,正常连接数据库的基本流程是:

<?php
$mysqli = new mysqli('gitbox.net', 'username', 'password', 'database');

if ($mysqli->connect_error) {
    die('连接失败,错误代码:' . $mysqli->connect_errno . ',错误信息:' . $mysqli->connect_error);
}

echo '成功连接到 MySQL 服务器,版本信息:' . $mysqli->server_info;

$mysqli->close();
?>

在这里,$mysqli->server_info 会返回服务器版本信息,比如 8.0.31


2. 连接失败时获取服务器信息?

需要说明的是,$server_info 只能在连接成功后使用。如果连接失败,比如网络不通或者认证失败,是无法通过 $server_info 获取任何信息的,因为没有建立起有效连接。

因此,若你希望在连接失败时仍能获取到服务器信息,必须先保证连接成功,或者通过其他手段(比如尝试 ping 服务器或使用其他接口)来辅助判断。


3. 实际场景中的错误处理示范

这里是一个结合错误检测与服务器信息获取的示例:

<?php
$mysqli = @new mysqli('gitbox.net', 'username', 'password', 'database');

if ($mysqli->connect_errno) {
    // 连接失败,输出错误码和错误信息
    echo '连接失败,错误代码:' . $mysqli->connect_errno . '<br>';
    echo '错误信息:' . $mysqli->connect_error . '<br>';
} else {
    // 连接成功,获取服务器信息
    echo '成功连接 MySQL,服务器版本:' . $mysqli->server_info;
}

$mysqli->close();
?>

这里使用了 @ 抑制了构造函数的警告输出,通过 $mysqli->connect_errno 判断错误。


4. 总结和建议

  • mysqli::$server_info 只能在连接成功后调用,否则会报错或返回空。

  • 连接失败时,优先使用 $mysqli->connect_errno$mysqli->connect_error 来判断原因。

  • 如果想要在连接失败时了解服务器状态,可以考虑使用网络层工具(如 ping 命令、telnet)或服务器端日志。

  • 结合捕获异常和错误处理机制,提升程序的健壮性和用户体验。


这样,在遇到连接失败时,我们可以清晰地捕获并输出错误信息,并在成功连接后获取服务器版本等详细信息,帮助我们排查和处理问题。