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