在PHP主流架构开发中,数据库连接是实现数据交互的基础,选择合适的驱动并正确完成配置,是保障项目稳定运行的前提。不同的驱动适配不同的开发需求,配置方式也存在差异,需要开发者根据实际场景合理选择。

PHP常用数据库驱动对比
目前PHP主流的数据库连接驱动主要有PDO和MySQLi两种,两者的特性差异如下:
| 驱动类型 | 支持数据库范围 | 预处理支持 | 面向对象支持 | 适用场景 |
|---|---|---|---|---|
| PDO | 多种数据库(MySQL、PostgreSQL、SQLite等) | 是 | 是 | 需要兼容多数据库类型的项目 |
| MySQLi | 仅MySQL | 是 | 是(同时支持过程化风格) | 仅使用MySQL数据库的项目 |
PDO驱动连接数据库配置与实现
基础配置步骤
使用PDO连接数据库前,需要先确认PHP环境已经开启PDO扩展,在php.ini中找到对应扩展取消注释即可。之后通过构造PDO实例完成连接,核心配置参数包括数据库类型、主机地址、数据库名、用户名和密码。
代码示例
<?php
// 数据库配置参数
$dbType = 'mysql'; // 数据库类型
$host = '127.0.0.1'; // 数据库主机地址
$dbName = 'test_db'; // 数据库名称
$username = 'root'; // 数据库用户名
$password = '123456'; // 数据库密码
$charset = 'utf8mb4'; // 字符集
// 构造DSN字符串
$dsn = "$dbType:host=$host;dbname=$dbName;charset=$charset";
try {
// 创建PDO实例
$pdo = new PDO($dsn, $username, $password);
// 设置错误模式为异常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "PDO连接数据库成功";
} catch (PDOException $e) {
echo "数据库连接失败:" . $e->getMessage();
}
?>
MySQLi驱动连接数据库配置与实现
面向对象风格实现
MySQLi的面向对象风格使用起来和PDO逻辑类似,需要先创建mysqli实例,通过构造参数传入配置信息,也可以后续调用对应方法设置。
<?php
// 数据库配置参数
$host = '127.0.0.1';
$username = 'root';
$password = '123456';
$dbName = 'test_db';
$port = 3306; // MySQL默认端口
// 创建mysqli实例
$mysqli = new mysqli($host, $username, $password, $dbName, $port);
// 检查连接是否成功
if ($mysqli->connect_error) {
die("数据库连接失败:" . $mysqli->connect_error);
}
// 设置字符集
$mysqli->set_charset('utf8mb4');
echo "MySQLi面向对象风格连接数据库成功";
$mysqli->close();
?>
过程化风格实现
MySQLi同时支持过程化风格,适合习惯过程式开发的开发者使用,核心逻辑和面向对象风格一致,只是调用方式不同。
<?php
$host = '127.0.0.1';
$username = 'root';
$password = '123456';
$dbName = 'test_db';
// 过程化方式连接数据库
$link = mysqli_connect($host, $username, $password, $dbName);
if (!$link) {
die("数据库连接失败:" . mysqli_connect_error());
}
mysqli_set_charset($link, 'utf8mb4');
echo "MySQLi过程化风格连接数据库成功";
mysqli_close($link);
?>
主流架构下的连接配置建议
在MVC、分层架构等主流PHP架构中,建议将数据库配置单独放在配置文件中,避免硬编码。例如在配置文件中定义数据库参数数组,连接时引入配置文件即可,方便后续环境切换时修改配置。
如果项目需要兼容多种数据库,优先选择PDO驱动;如果项目确定仅使用MySQL,且不需要多数据库适配能力,MySQLi也是不错的选择。无论选择哪种驱动,都建议开启预处理功能,避免SQL注入风险。