php连接mysql需确保:一、php已内置mysqli和pdo_mysql扩展(通过php -m验证);二、mysql服务运行且监听3306端口;三、代码中host用127.0.0.1而非localhost,推荐pdo方式并启用异常模式。

你需要让PHP代码能稳定读写MySQL数据,而不是反复折腾配置、改扩展、重启服务、查错误日志。这要求PHP安装时就自带可用的MySQL连接能力,且MySQL服务启动后能被PHP立即识别——不是“理论上可以连”,而是打开浏览器就能看到“连接成功”四个字。
确认PHP是否已内置MySQL支持
打开命令行,执行 php -m | findstr "mysqli pdo_mysql"(Windows)或 php -m | grep -E "mysqli|pdo_mysql"(macOS/Linux)。如果两行都出现,说明PHP已编译进这两个扩展,无需手动启用;若只出现一个或都不出现,说明当前PHP版本不满足“永久免费版”前提——它必须是官方预编译二进制包(如windows.php.net下载的Thread Safe ZIP版)或主流集成环境(XAMPP、MAMP、Homebrew php@8.3),而非自己用源码configure编译的精简版。
这一步不能跳过。自己编译的PHP默认不带mysqlnd驱动,即使写了extension=mysqli也会报错“找不到指定模块”。【必须使用php.net官网下载的Windows ZIP包,或XAMPP/MAMP等集成包】
MySQL服务启动并监听3306端口
运行MySQL服务,确保它处于“正在运行”状态。Windows下打开服务管理器,找到“MySQL80”或类似名称的服务,右键启动;macOS用brew services start mysql;Linux用sudo systemctl start mysql。
验证端口是否就绪:在命令行执行 netstat -an | findstr :3306(Windows)或 lsof -i :3306(macOS/Linux)。看到LISTEN状态即表示MySQL已准备好接受连接。
如果端口被占用,不要强行改MySQL配置去换端口——很多PHP脚本硬编码localhost:3306,改了反而全挂。直接关掉占用3306的程序(常见是另一个MySQL实例或Docker容器)。
PHP中直连MySQL的三种写法
方法一:PDO方式(推荐,一次写完长期可用)
创建test_db.php,内容如下:
<?php <br>$dsn = "mysql:host=127.0.0.1;dbname=mysql;charset=utf8mb4";<br>$user = "root";<br>$pass = "your_password";<br>try {<br> $pdo = new PDO($dsn, $user, $pass, [<br> PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,<br> PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC<br> ]);<br> echo "PDO连接成功";<br>} catch (PDOException $e) {<br> die("连接失败:" . $e->getMessage());<br>}
注意:host必须写127.0.0.1,不能写localhost——后者在某些PHP+MySQL组合下会走Unix socket,而Windows没有该机制,直接报错“No such file or directory”。
方法二:MySQLi面向对象方式(兼容性最强)
新建test_mysqli.php,填入:
<?php <br>$host = "127.0.0.1";<br>$username = "root";<br>$password = "your_password";<br>$database = "mysql";<br>$conn = new mysqli($host, $username, $password, $database);<br>if ($conn->connect_error) {<br> die("MySQLi连接失败:" . $conn->connect_error);<br>echo "MySQLi连接成功";
方法三:MySQLi过程式(仅用于快速验证)
建test_procedural.php,写:
<?php <br>$link = mysqli_connect("127.0.0.1", "root", "your_password", "mysql");<br>if (!$link) {<br> die("过程式连接失败:" . mysqli_connect_error());<br>}<br>echo "过程式连接成功";
测试文件放在哪才能被访问
第一步:确认你的Web服务器根目录位置。
如果是XAMPP,默认是C:\xampp\htdocs;MAMP是/Applications/MAMP/htdocs;纯PHP内置服务器则任意目录均可。
第二步:把上面任一测试文件(如test_db.php)放进该目录。
第三步:启动Apache(XAMPP/MAMP界面点Start,或命令行php -S localhost:8000)。
第四步:浏览器访问http://localhost/test_db.php(XAMPP/MAMP)或http://localhost:8000/test_db.php(内置服务器)。
看到“PDO连接成功”字样,且无任何警告或致命错误,即表示PHP与MySQL已完成无缝对接。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











