正确配置数据库连接是PHP操作MySQL的核心,需确保使用正确的主机、用户名、密码、数据库名及连接方式。1. MySQLi扩展支持面向对象和过程化编程,推荐启用mysqli扩展并设置utf8mb4字符集以避免乱码;2. PDO更推荐使用,因其支持多数据库、预处理语句和异常处理机制,提升安全性和可移植性;3. 应将数据库配置信息分离至config.php或.env文件中,避免硬编码,便于环境管理和维护;4. 遵循安全实践,如禁用生产环境错误显示、使用预处理防止SQL注入、及时释放连接资源,并限制数据库用户权限,不使用root账户直连。

要让PHP工具顺利操作MySQL数据库,核心是正确配置数据库连接。无论你使用原生PHP还是框架,连接配置的逻辑基本一致。关键在于填写正确的主机、用户名、密码、数据库名以及选择合适的连接方式(如MySQLi或PDO)。
1. 使用MySQLi扩展连接MySQL
MySQLi是PHP中常用的MySQL操作扩展,支持面向过程和面向对象两种写法。推荐使用面向对象方式,结构更清晰。
- 确保PHP环境中已启用mysqli扩展(php.ini中取消注释 extension=mysqli)
- 创建连接时传入主机、用户名、密码、数据库名和端口(可选)
- 建议设置字符集为utf8mb4,避免中文乱码
示例代码:
$host = 'localhost';
$username = 'root';
$password = 'your_password';
$dbname = 'test_db';
$conn = new mysqli($host, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$conn->set_charset("utf8mb4");
echo "MySQLi连接成功";
2. 使用PDO连接MySQL(推荐)
PDO支持多种数据库,代码可移植性更强,且天然支持预处理语句,更安全。
立即学习“PHP免费学习笔记(深入)”;
- PDO需要开启pdo_mysql扩展
- 使用DSN(数据源名称)定义连接信息
- 设置错误模式为异常模式,便于调试
示例代码:
$host = 'localhost';
$dbname = 'test_db';
$username = 'root';
$password = 'your_password';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
try {
$pdo = new PDO($dsn, $username, $password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);
echo "PDO连接成功";
} catch (PDOException $e) {
die("连接失败: " . $e->getMessage());
}
3. 配置文件分离与环境管理
不要把数据库信息硬编码在业务逻辑中。应将连接参数提取到独立的配置文件中,便于维护和部署。
- 创建 config.php 或 .env 文件存储敏感信息
- 生产环境关闭错误显示,开发环境开启以便排查问题
- 使用常量或数组保存配置,统一调用
config.php 示例:
return [
'db_host' => 'localhost',
'db_user' => 'root',
'db_pass' => 'secure_password',
'db_name' => 'myapp_db',
'db_charset' => 'utf8mb4'
];
在主程序中引入并使用:
$config = require 'config.php';
$pdo = new PDO(
"mysql:host={$config['db_host']};dbname={$config['db_name']};charset={$config['db_charset']}",
$config['db_user'],
$config['db_pass'],
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
4. 安全与最佳实践
数据库连接涉及敏感信息,必须遵循安全规范。
- 避免在代码中明文写密码,尤其是提交到版本控制时
- 使用预处理语句防止SQL注入
- 连接使用完毕后及时释放资源(特别是长连接场景)
- 限制数据库用户权限,不使用root账户连接
基本上就这些。只要配置正确、使用安全方式操作,PHP连接MySQL并不复杂,但细节容易忽略。











