php连接mysql主流且安全的方式只有mysqli和pdo两种;mysql_connect已在php 7.0中彻底移除,必须启用mysqli或pdo_mysql扩展,推荐mysqli面向对象写法或pdo异常模式连接,并将数据库参数抽离至配置文件。

PHP 连接 MySQL 数据库,现在主流且安全的方式只有两种:MySQLi 和 PDO。mysql_connect 已在 PHP 7.0 中彻底移除,不能再用。
确认扩展已启用
连接前必须确保对应扩展已加载:
- MySQLi:检查 php.ini 中 extension=mysqli 未被注释;运行
php -m | grep mysqli确认启用 - PDO + MySQL 驱动:需同时启用 extension=pdo 和 extension=pdo_mysql
- 命令行验证:
php -r "print_r(PDO::getAvailableDrivers());"应包含mysql
用 MySQLi 连接(推荐面向对象写法)
适合专注 MySQL 的项目,语法直观,支持预处理和事务:
- 基本连接:
$conn = new mysqli("localhost", "root", "", "test"); - 必须检查错误:
if ($conn->connect_error) { die("连接失败:" . $conn->connect_error); } - 推荐指定端口和字符集:
new mysqli("127.0.0.1", "user", "pass", "db", 3306),并执行$conn->set_charset("utf8mb4") - 脚本结束前可调用
$conn->close(),不调用也会自动释放
用 PDO 连接(推荐用于新项目)
接口统一、异常友好、天然防 SQL 注入,跨数据库迁移成本低:
- DSN 字符串要完整:
"mysql:host=localhost;dbname=test;charset=utf8mb4" - 务必设置错误模式:
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) - 建议补充常用选项:
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC(默认取关联数组)、PDO::ATTR_EMULATE_PREPARES => false(禁用模拟预处理,更安全) - 连接失败会抛出 PDOException,必须用 try/catch 捕获,否则直接报错终止
把连接参数抽离到配置文件
避免密码等敏感信息硬编码在业务代码中:
- 新建
config.php:define('DB_HOST', 'localhost');<br> define('DB_USER', 'root');<br> define('DB_PASS', 'your_password');<br> define('DB_NAME', 'test');<br> define('DB_CHARSET', 'utf8mb4'); - 在主文件中引入:
require_once 'config.php';,再拼接 DSN 或传入 mysqli 构造函数 - 生产环境应将 config.php 放在 Web 根目录之外,或通过 Web 服务器禁止直接访问
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











