PHP PDO类库详解:连接与操作实例

0 下载量 64 浏览量 更新于2024-09-01 收藏 65KB PDF 举报
"这篇文章主要分析了PHP的PDO(PHP Data Objects)常用类库,通过实例展示了如何连接数据库、初始化PDO对象以及执行基本的增删改查操作。文章包含两个类,一个用于数据库连接(Db.class.php),另一个是数据库操作类(Model.class.php)。" 在PHP中,PDO是一个提供数据库访问的抽象层,它支持多种数据库系统,如MySQL、SQLite、PostgreSQL等。PDO的主要优点包括更好的安全性、支持预处理语句以及提供更丰富的错误模式。 1、Db.class.php 连接数据库 在Db.class.php中,定义了一个静态方法`getDB()`,该方法创建一个PDO实例并进行初始化。首先,使用DSN(Data Source Name)来指定数据库连接信息,例如`DB_DSN`通常包含数据库类型、主机名、数据库名等。接着,提供用户名(DB_USER)和密码(DB_PWD)进行身份验证。`setAttribute()`方法用来设置PDO对象的属性,如启用持久连接(ATTR_PERSISTENT)、设置错误模式为异常(ATTR_ERRMODE_EXCEPTION)以及处理空字符串为SQL NULL(ATTR_ORACLE_NULLS)。最后,通过执行`query('SET NAMES utf8')`来设定字符集为UTF-8,确保数据正确编码。 2、Model.class.php 数据库操作类 Model.class.php定义了一个名为M的类,它包含一个私有属性`_db`用于存储PDO实例。构造函数调用`Db::getDB()`获取数据库连接。类中定义了一些方法,如`insert()`,用于插入数据到数据库。该方法接受表名、字段名数组、值数组和一个布尔值,决定是否返回最后插入的ID。在`insert()`方法内部,使用`try-catch`结构捕获可能的异常,确保在发生错误时能够妥善处理。 插入操作通过构建SQL语句(例如:`INSERT INTO $tName ($field_str) VALUES ($val_str)`),然后使用PDO对象的`exec()`或`prepare()`/`execute()`方法来执行。预处理语句(prepare/execute)可以提高性能并防止SQL注入攻击,因为它们允许参数化查询。 除了插入操作,PDO还支持其他数据库操作,如: - **查询(SELECT)**:使用`query()`或`prepare()`/`execute()`方法执行查询,获取结果集后可以通过`fetch()`或`fetchAll()`来遍历数据。 - **更新(UPDATE)**:构建UPDATE语句并执行,可以使用预处理语句来增强安全性。 - **删除(DELETE)**:构建DELETE语句并执行,同样支持预处理。 - **事务处理(Transactions)**:使用`beginTransaction()`开始事务,`commit()`提交事务,`rollBack()`回滚事务,提供数据一致性保障。 PHP的PDO类库提供了强大而灵活的数据库操作功能,通过面向对象的方式简化了数据库操作,并提高了代码的安全性和效率。在实际项目中,开发者可以根据需求进一步封装这些基础操作,创建更高级别的数据访问层(如ORM框架),以实现更便捷的数据库操作。