XAMPP MySQL 连接失败首要确认服务是否运行:控制面板中MySQL状态须为Running,命令行执行mysql -u root -p(密码为空)可进入即正常;PHP连接应使用127.0.0.1而非localhost,确保php.ini中mysqli和pdo_mysql已启用,建库及连接时统一使用utf8mb4字符集。

怎么确认 XAMPP 自带的 MySQL 正在运行
连不上,八成是 MySQL 根本没启动。XAMPP 控制面板里 MySQL 行的 Start 按钮必须是绿色,且状态显示 Running。点开 Logs 查看错误日志,常见问题包括:端口被占用(默认 3306)、my.ini 配置损坏、或上次异常退出导致 ibdata1 文件锁死。
验证方式:命令行执行 mysql -u root -p,直接回车(XAMPP 默认 root 密码为空),能进 MySQL 提示符就说明服务正常。
PHP 代码里用 mysqli_connect 连本地 XAMPP MySQL
XAMPP 默认配置下,PHP 不需要改任何扩展,mysqli 和 PDO 都已启用。直接用以下参数连接:
$conn = mysqli_connect('127.0.0.1', 'root', '', 'test_db');
if (!$conn) {
die('连接失败:' . mysqli_connect_error());
}
注意几个关键点:
立即学习“PHP免费学习笔记(深入)”;
-
127.0.0.1比localhost更可靠 —— Windows 下localhost可能走命名管道而非 TCP,容易报错Can't connect to MySQL server - 第三个参数是密码,XAMPP 初始为空字符串,不是
null或省略 - 第四个参数是数据库名,可为空,但后续操作前需用
mysqli_select_db()或 SQL 的USE - 如果用
PDO,DSN 应为mysql:host=127.0.0.1;dbname=test_db;charset=utf8mb4
php.ini 里要不要改 mysql.default_host 这类配置
不用动。XAMPP 自带的 php.ini 已预设好 MySQL 扩展路径和默认值,强行修改 mysql.default_host、mysql.default_user 等过时配置项反而会干扰 mysqli 或 PDO 的显式连接逻辑。
唯一建议检查的是:extension=mysqli 和 extension=pdo_mysql 在 php.ini 中是否取消了分号注释;可通过 phpinfo() 页面搜索 “mysqli” 确认模块已加载。
连得上但查不出数据?检查字符集和数据库创建方式
很多“空结果”问题其实是字符集不一致导致的隐式转换失败。XAMPP MySQL 默认字符集是 latin1,但 PHP 脚本常以 UTF-8 发送 SQL,中文字段可能存成乱码或查不到。
稳妥做法:
- 建库时指定字符集:
CREATE DATABASE test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 连接后立即设置:
mysqli_set_charset($conn, 'utf8mb4'); - PHP 文件本身保存为 UTF-8 无 BOM 格式(用 VS Code 或 Notepad++ 检查)
- HTML 页面加
,避免浏览器解析错位
真正麻烦的从来不是连上,而是连上之后读写行为和你预期不一致 —— 字符集、SQL 模式(如 STRICT_TRANS_TABLES)、甚至时间区(SET time_zone = '+00:00')都可能悄悄影响结果。











