php读写数据库核心是连接、执行sql、处理结果、释放资源,推荐pdo/mysqli并用预处理防注入;需异常捕获、字符集设置、参数绑定、fetch模式选择及显式置null释放资源。

PHP 读写数据库的核心是建立连接、发送 SQL 语句、处理结果、最后关闭资源。现代推荐使用 PDO 或 MySQLi,它们支持预处理语句,能有效防止 SQL 注入。
1. 建立数据库连接
以 PDO 为例,需提供 DSN(数据源名称)、用户名和密码。连接失败时应捕获异常,避免暴露敏感信息。
- DSN 格式通常为:
mysql:host=localhost;dbname=testdb;charset=utf8mb4 - 开启异常模式:
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,让错误抛出异常而非静默失败 - 连接后可设置默认字符集,避免中文乱码
2. 执行写操作(INSERT/UPDATE/DELETE)
使用预处理语句绑定参数,不拼接字符串。即使数据来自可信来源,也应统一用占位符。
- 准备语句:
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)") - 执行并传参:
$stmt->execute(['张三', 'zhang@example.com']) - 获取影响行数:
$stmt->rowCount()可判断是否成功插入
3. 执行读操作(SELECT)并获取结果
查询返回的是结果集对象,需调用方法提取数据。根据需求选择 fetch 模式(如关联数组、索引数组或对象)。
立即学习“PHP免费学习笔记(深入)”;
- 单行数据:
$row = $stmt->fetch(PDO::FETCH_ASSOC) - 多行数据:
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC) - 只取一列值(如统计总数):
$count = $stmt->fetchColumn()
4. 关闭连接与资源清理
PDO 连接在 PHP 脚本结束时会自动释放,但显式置为 null 可提前释放资源,尤其在长脚本或循环中。
-
$stmt = null;—— 释放语句句柄 -
$pdo = null;—— 断开数据库连接 - 不需要手动调用 close(),PDO 对象销毁即断开
不复杂但容易忽略:每次数据库操作都应有错误处理,哪怕只是记录日志;所有外部输入必须通过参数绑定,绝不直接拼进 SQL 字符串。











