PHP如何连接指定数据库

在Web开发中,PHP是一种广泛使用的服务器端脚本语言,而数据库是存储和管理数据的核心组件,PHP通过多种方式连接数据库,包括MySQL、MySQLi、PDO等扩展,本文将详细介绍PHP如何连接指定数据库,涵盖不同方法的实现步骤、优缺点及适用场景。
使用MySQL扩展连接数据库
MySQL扩展是PHP早期提供的数据库操作接口,适用于MySQL 4.1及以下版本,尽管已被MySQLi和PDO取代,但在某些旧项目中仍可能使用。
连接步骤
确保PHP已启用MySQL扩展,可以通过phpinfo()函数检查,连接代码如下:
$conn = mysql_connect("localhost", "username", "password");
if (!$conn) {
die("连接失败: " . mysql_error());
}
mysql_select_db("database_name", $conn);
注意事项
- MySQL扩展已废弃,不推荐用于新项目。
- 不支持预处理语句,存在SQL注入风险。
使用MySQLi扩展连接数据库
MySQLi(MySQL Improved)是PHP对MySQL的增强扩展,支持MySQL 4.1及以上版本,提供了面向过程和面向对象两种API。

面向对象方式
$conn = new mysqli("localhost", "username", "password", "database_name");
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
面向过程方式
$conn = mysqli_connect("localhost", "username", "password", "database_name");
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}
优点
- 支持预处理语句,安全性更高。
- 提供事务支持,适合复杂操作。
- 性能优于MySQL扩展。
使用PDO连接数据库
PDO(PHP Data Objects)是一种轻量级、统一的数据库访问层,支持多种数据库(如MySQL、PostgreSQL、SQLite等)。
连接步骤
try {
$conn = new PDO("mysql:host=localhost;dbname=database_name", "username", "password");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("连接失败: " . $e->getMessage());
}
优点
- 跨数据库兼容性更好。
- 支持预处理语句和事务。
- 错误处理机制灵活。
配置数据库连接参数
在实际项目中,数据库连接参数(如主机名、用户名、密码)通常存储在配置文件中,以提高安全性和可维护性。
示例配置文件(config.php)
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'username');
define('DB_PASS', 'password');
define('DB_NAME', 'database_name');
?>
引用配置文件
require_once 'config.php'; $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
处理连接错误
无论使用哪种方法,都需要妥善处理连接错误,避免敏感信息泄露。
错误处理示例
try {
$conn = new PDO("mysql:host=localhost;dbname=database_name", "username", "password");
} catch (PDOException $e) {
// 记录错误日志
error_log("数据库连接失败: " . $e->getMessage());
// 返回用户友好的错误信息
echo "数据库连接失败,请稍后重试。";
}
关闭数据库连接
完成操作后,应关闭数据库连接以释放资源。

MySQLi关闭连接
$conn->close();
PDO关闭连接
$conn = null;
最佳实践
- 使用预处理语句:防止SQL注入攻击。
- 限制数据库权限:仅授予必要的权限。
- 使用持久连接:对于高并发场景,可提高性能。
- 定期备份数据库:确保数据安全。
相关问答FAQs
Q1: PHP连接数据库时出现“Access denied”错误,如何解决?
A: 此错误通常是由于用户名或密码错误、数据库用户权限不足或主机名配置不正确导致的,请检查以下内容:
- 确认数据库用户名和密码是否正确。
- 检查数据库用户是否具有访问指定数据库的权限(可通过
GRANT语句授权)。 - 确认主机名是否正确(如
localhost或实际IP地址)。
Q2: 如何选择MySQLi和PDO?
A: 选择取决于项目需求:
- MySQLi:如果项目仅使用MySQL数据库且需要高性能,可选择MySQLi。
- PDO:如果项目需要支持多种数据库或更灵活的错误处理,PDO是更好的选择。
PDO的预处理语句语法更简洁,适合复杂查询。
标签: php连接指定数据库方法 php代码连接指定数据库 php连接指定数据库步骤