上一篇
php怎么连数据库
- 数据库
- 2025-07-17
- 6
P连接数据库通常使用 mysqli或 PDO扩展,使用 mysqli:先创建连接对象`$conn = new mysqli($servername, $username, $password, $dbname);
PHP连接数据库的详细方法及要点
在PHP开发中,连接数据库是实现数据存储、查询和操作的基础步骤,以下是关于PHP如何连接数据库的详细说明,涵盖常用方法、配置要点及最佳实践。
PHP连接数据库的两种主流方式
| 方式 | PDO(推荐) | MySQLi |
|---|---|---|
| 适用场景 | 支持多种数据库(如MySQL、PostgreSQL、SQLite) | 仅适用于MySQL |
| 特性 | 统一接口、预处理语句、异常处理 | 面向对象/过程、事务支持、预处理语句 |
| 扩展依赖 | 需启用pdo_mysql扩展 | 需启用mysqli扩展 |
使用PDO连接数据库
-
安装与配置PDO扩展
- 编辑php.ini文件,取消注释: extension=pdo_mysql
- 重启Web服务器使配置生效。
-
连接参数配置
$host = 'localhost'; // 数据库服务器地址 $dbname = 'testdb'; // 数据库名 $user = 'root'; // 用户名 $pass = 'password'; // 密码 $charset = 'utf8mb4'; // 字符集 -
建立连接
$dsn = "mysql:host=$host;dbname=$dbname;charset=$charset"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // 异常模式 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // 关联数组返回结果 PDO::ATTR_EMULATE_PREPARES => false, // 禁用模拟预处理 ]; try { $pdo = new PDO($dsn, $user, $pass, $options); echo "PDO连接成功"; } catch (PDOException $e) { die("连接失败: " . $e->getMessage()); }
-
执行操作示例
// 查询数据 $stmt = $pdo->query('SELECT FROM users'); foreach ($stmt as $row) { echo $row['name'] . "n"; } // 插入数据(预处理) $sql = "INSERT INTO users (name, age) VALUES (?, ?)"; $pdo->prepare($sql)->execute(['John Doe', 30]);
使用MySQLi连接数据库
-
安装与配置MySQLi扩展
- 编辑php.ini文件,取消注释: extension=mysqli
-
连接参数配置

-
建立连接(面向对象风格)
$mysqli = new mysqli($servername, $username, $password, $dbname); if ($mysqli->connect_error) { die('连接失败: ' . $mysqli->connect_error); } echo "MySQLi连接成功"; -
执行操作示例
// 查询数据 $result = $mysqli->query("SELECT FROM users"); while ($row = $result->fetch_assoc()) { echo $row['name'] . "n"; } // 关闭连接 $mysqli->close(); -
配置文件分离
- 将敏感信息存储在独立文件(如config.php): return [ 'host' => 'localhost', 'db' => 'testdb', 'user' => 'root', 'pass' => 'password', 'charset' => 'utf8mb4' ];
- 主程序加载配置: $config = include 'config.php'; $pdo = new PDO("mysql:host={$config['host']};dbname={$config['db']}", $config['user'], $config['pass']);
-
防止SQL载入

- 使用预处理语句绑定参数: // PDO示例 $stmt = $pdo->prepare('SELECT FROM users WHERE email = ?'); $stmt->execute([$email]);
-
错误处理
- PDO通过try-catch捕获异常: try { $pdo = new PDO(...); } catch (PDOException $e) { error_log($e->getMessage()); // 记录日志 die('数据库连接失败'); // 用户友好提示 }
- MySQLi检查返回值或异常: if (!$conn) { die('连接错误: ' . mysqli_connect_error()); }
-
字符集设置
- 在连接时指定字符集(如utf8mb4),避免中文乱码。
- 如果需要支持多种数据库(如MySQL、PostgreSQL),优先选择PDO;
- 如果仅针对MySQL且需要更细粒度的控制(如特定函数),可选MySQLi。
- 将敏感信息存储在独立配置文件中,并设置文件权限(如chmod 600 config.php);
常见问题与解决方案
问题 解决方案 连接失败 检查MySQL服务是否启动,确认主机名、端口、用户名和密码正确。 乱码问题 确保连接时设置正确的字符集(如utf8mb4)。 权限不足 检查数据库用户是否拥有访问权限,远程连接需授权。 FAQs
如何选择PDO和MySQLi?
如何避免数据库凭据泄露?
安全与最佳实践