使用 mysqli 扩展连接 mysql 时,在 new mysqli() 构造函数中传入主机名、用户名、密码和数据库名后,第五个参数指定端口号即可。将端口设为 3306 是默认行为,但显式声明能确保在不同环境(如 docker 或自定义配置)下连接准确无误。

如何验证连接是否成功并获取连接对象
调用 new mysqli() 后会返回一个 mysqli 对象实例。如果连接失败,该对象的 connect_error 属性会包含错误信息,且 connect_errno 不为零。通过检查这两个属性可以判断连接状态,若成功则直接使用该对象执行 SQL 查询。

$host = '127.0.0.1';
$user = 'root';
$pass = 'password';
$db = 'test_db';
$port = 3306;
$conn = new mysqli($host, $user, $pass, $db, $port);
if ($conn->connect_error) {
die('Connection failed: ' . $conn->connect_error);
}
echo 'Connected successfully to port ' . $conn->get_server_info();
$conn->close();
预期结果:控制台输出 Connected successfully to port 8.0.xx... 类似字符串,无报错退出。若端口错误或网络不通,则输出 Connection failed: ...。
如何处理连接超时或拒绝的情况
当目标服务器未监听指定端口或防火墙拦截时,mysqli 会抛出异常或返回错误。可以通过设置 MYSQLI_OPT_CONNECT_TIMEOUT 选项来缩短等待时间,避免脚本长时间挂起。同时,应捕获可能的异常或使用错误处理机制,以便快速反馈连接失败原因。
安装、修复、更新或打包一个基于 Python 和 PyMySQL 实现的 Windows `mysql` 命令。适用于用户希望在 PowerShell/CMD 中输入 `mysql` 时重定向到 Python 实现、需要交互式输入 MySQL 连接信息、需要同步到当前用户本地 bin 目录,或需要将该能力封装成可公开复用的 Codex skill。

$conn = new mysqli();
$conn->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);
$conn->real_connect('127.0.0.1', 'root', 'password', 'test_db', 3306);
if ($conn->connect_error) {
echo 'Timeout or refused: ' . $conn->connect_error;
} else {
echo 'Connection established.';
}
$conn->close();
预期结果:若服务器不可达,约 5 秒后输出 Timeout or refused: ...;若可达,则立即输出 Connection established.。
基于输入参数3306的端口解析与协议选择问题
当传入的端口号为 3306 时,mysqli 默认使用 TCP/IP 协议进行连接。如果希望使用 Unix 套接字,需将主机名设为 localhost 且不指定端口,或明确指定 socket 路径。显式指定端口 3306 强制使用 TCP/IP,即使主机名为 localhost 也是如此。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










