XAMPP MySQL 连接失败首要确认服务是否运行:控制面板中MySQL状态须为Running,命令行执行mysql -u root -p(密码为空)可进入即正常;PHP连接应使用127.0.0.1而非localhost,确保php.ini中mysqli和pdo_mysql已启用,建库及连接时统一使用utf8mb4字符集。
连不上,八成是 MySQL 根本没启动。XAMPP 控制面板里 MySQL 行的 Start 按钮必须是绿色,且状态显示 Running。点开 Logs 查看错误日志,常见问题包括:端口被占用(默认 3306)、my.ini 配置损坏、或上次异常退出导致 ibdata1 文件锁死。
验证方式:命令行执行 mysql -u root -p,直接回车(XAMPP 默认 root 密码为空),能进 MySQL 提示符就说明服务正常。
XAMPP 默认配置下,PHP 不需要改任何扩展,mysqli 和 PDO 都已启用。直接用以下参数连接:
$conn = mysqli_connect('127.0.0.1', 'root', '', 'test_db');
if (!$conn) {
die(
'连接失败:' . mysqli_connect_error());
}
注意几个关键点:
127.0.0.1 比 localhost 更可靠 —— Windows 下 localhost 可能走命名管道而非 TCP,容易报错 Can't connect to MySQL server
null 或省略mysqli_select_db() 或 SQL 的 USE
PDO,DSN 应为 mysql:host=127.0.0.1;dbname=test_db;charset=utf8mb4
不用动。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');
,避免浏览器解析错位真正麻烦的从来不是连上,而是连上之后读写行为和你预期不一致 —— 字符集、SQL 模式(如 STRICT_TRANS_TABLES)、甚至时间区(SET time_zone = '+00:00')都可能悄悄影响结果。