PDO对mysql数据库的增删改查操作类
- 虚拟主机
- 2025-12-22
- 5
PDO(PHP Data Objects)是一种在PHP中访问数据库的轻量级、统一的接口,它为不同类型的数据库提供了统一的访问方法,尤其对MySQL数据库的操作具有显著优势,PDO预处理语句有效防止SQL载入,支持多种数据库驱动,且错误处理机制灵活,以下将详细介绍基于PDO的MySQL数据库增删改查操作类的设计与实现。
创建一个PDO数据库操作类,需要包含连接数据库、执行SQL语句、查询数据、插入数据、更新数据和删除数据等核心功能,以下是类的详细实现:
核心方法说明
-
构造函数:通过传入数据库主机名、数据库名、用户名和密码,创建PDO实例并设置错误模式为异常模式,同时设置字符集为UTF8。
-
query方法:执行预处理SQL语句,参数化查询防止SQL载入,返回PDOStatement对象供后续操作。
-
fetchOne和fetchAll方法:分别用于获取单条和多条查询结果,以关联数组形式返回数据。
-
insert方法:动态构建插入SQL语句,支持关联数组形式的数据传入,返回受影响的行数。
-
update方法:根据条件和更新数据动态构建SQL语句,支持参数化查询,返回受影响的行数。
-
delete方法:根据删除条件构建SQL语句,返回受影响的行数。
使用示例
// 初始化数据库连接 $db = new PDODB('localhost', 'test', 'root', 'password'); // 插入数据 $insertData = ['name' => '张三', 'age' => 25, 'email' => 'zhangsan@example.com']; $db>insert('users', $insertData); // 查询数据 $user = $db>fetchOne("SELECT * FROM users WHERE id = ?", [1]); $allUsers = $db>fetchAll("SELECT * FROM users"); // 更新数据 $updateData = ['age' => 26, 'email' => 'zhangsan_new@example.com']; $db>update('users', $updateData, 'id = ?', [1]); // 删除数据 $db>delete('users', 'id = ?', [1]);
PDO操作的优势对比
| 特性 | PDO | MySQLi |
|---|---|---|
| 支持数据库 | 多种数据库(MySQL、SQLite等) | 仅MySQL |
| 预处理语句 | 支持 | 支持 |
| 面向对象与过程化 | 仅面向对象 | 两者支持 |
| 安全性(SQL载入) | 参数化查询有效防止 | 参数化查询有效防止 |
| 错误处理 | 异常模式 | 警告/异常模式 |
相关问答FAQs
Q1: PDO与MySQLi的主要区别是什么?如何选择?
A1: PDO支持多种数据库(如MySQL、SQLite、Oracle等),而MySQLi仅支持MySQL,如果项目可能需要切换数据库类型,PDO是更优选择;如果确定仅使用MySQL,MySQLi也是成熟的选择,两者在预处理语句、安全性方面表现相似,可根据团队熟悉度决定。
Q2: 使用PDO时如何处理事务以确保数据一致性?
A2: PDO通过beginTransaction()、commit()和rollBack()方法实现事务管理,示例:
$db>pdo>beginTransaction(); try { $db>insert('table1', [...]); $db>update('table2', [...], 'id = ?', [...]); $db>pdo>commit(); // 提交事务 } catch (Exception $e) { $db>pdo>rollBack(); // 回滚事务 throw $e; }