PDO

PDO

轻量级且具有一致性的接口
PDO是PHP数据对象(PHP Data Object)的缩写。[1]PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用,无法运行于之前的PHP版本。
    中文名:PDO 外文名: 适用领域: 所属学科: 扩展:PHP访问数据库 含义:一个轻量级的、一致性的接口 运行:在Unix环境下PHP5.1以上版本

运行

在Unix环境下PHP5.1以上版本中:

如果你正在使用PHP5.1版本,PDO和PDOSQLITE已经包含在了此发行版中;当你运行configure时它将自动启用。推荐你将PDO作为共享扩展构建,这样可以使你获得通过PECL升级的好处。推荐的构建支持PDO的PHP的configureline应该也要启用zlib。你也应该启用你选择的数据库的PDO驱动;关于这个的更多信息请查看database-specificPDOdrivers,但要注意如果你将PDO作为一个共享扩展构建,你必须也要将PDO驱动构建为共享扩展。

PHP5.1发布时将附带一个全新的数据库连接层,即PHPDataObjects(PDO)。虽然PHP一直都拥有很好的数据库连接,但PDO让PHP达到一个新的高度。学习如何获得、安装和使用PDO,以连接到IBM?DB2?UniversalDatabase?和IBMCloudscape?数据库,插入和检索数据,并探索更多高级特性,例如预处理语句(preparedstatements)、绑定参数(boundparameters)、可滚动游标(scrollablecursors)、定位更新(positionedupdates)以及LOB。

背景

随着拥有更成熟OO语法的PHP5的发布,PHP越来越多地受到越来越大的机构的关注,对于PHP来说,提供更加一致的和可访问的数据访问API变得越来越重要。

PHP与流行的开放源代码关系数据库管理系统(RDBMS)MySQL之间总是很有默契。这对拍档的成功很大程度上是由于它们免费可用,而且进入的门槛也比较低,这两种产品的合作使它们各自都取得了广受推崇的地位。

很多PHP应用程序开发人员都习惯于PHP-MySQL这对组合,以致PHP对其他数据库的支持常常模仿MySQL客户机库API。然而,并不是所有的数据库客户机API都是一样的,也不是所有的数据库都提供相同的特性。虽然存在模仿,但不同的PHP数据库扩展都有它们各自的怪僻和不同之处,所以从一种数据库迁移到另一种数据库时会有一些困难。虽然这不是创建PDO的直接原因,但是在设计过程中还是有一定影响的。

如果您是带着想结合使用PHP和DB2的目的阅读本文,那么您很可能属于以下类型中的一种:

您从一家小公司开始,在MySQL(举个例子)上运行PHP,由于业务增长,您需要DB2所提供的可伸缩性/可靠性/支持或其他特性。您希望移植代码,以使用DB2,但由于API的变化,您需要编写或实现一个抽象层,以便在DB2上测试应用程序的同时可以继续在旧的数据库上运行。不仅如此,您还希望能有自己的选择,并保留支持其他RDBMS的可能性,因为您清楚,有些客户机可能已经和其他平台栓在一起了。

您用PHP在MySQL之上构建了一个小型的部门应用程序(同样,这只是举个例子,我并不是要跟MySQL过不去)。事实证明这个应用程序本身很有用,现在已经在这个部门之外使用,并且闯入了CIO/CTO的法眼——现在需要遵从托管的标准数据库。(是的,这是第一点的一个变种。)在其他某些复杂的企业级应用程序的后台,您已经有一个DB2实例;您希望利用PHP的快速应用程序开发和原型设计来生成动态报告。

目标

至此我们已经掌握了数据库及PHP的背景知识,现在正好可以提及PDO背后的一些设计目标:

为大多数数据库API中的常见特性提供一致的API。

具有可扩展性,以使数据库供应商X仍然可以暴露特性Y并保持PDO的兼容性。

提供大量基本的兼容性技巧,以便能够更方便地创建跨数据库兼容的应用程序。

不为给定数据库API中本来没有的特性(例如序列)提供完全抽象或仿真。PDO类意图为您提供对数据库本地特性的一致性访问,并减少干扰。

通过将与PHP内部打交道的代码(这是最难于编写的部分)集中起来,简化PHP数据库驱动程序的创建。

最后一点非常重要。PDO是模块化结构,它被分成一个公共核心以及一个或多个驱动程序扩展,公共核心提供了在脚本(PDO本身)中使用的API,驱动程序扩展则为PDO和本地RDBMS客户机API库架起一座桥梁。DB2用户将会希望使用PDO_ODBC驱动程序,据称它可以提供以下特性:

它经过重新编写,能支持遵从ODBCV3的驱动程序和驱动程序管理器。它还考虑了对DB2特定特性和优化的支持,这成为设计过程中的一部分——不是后来补充的。

它支持经过试验和测试的存储过程和大型对象。它不仅能够工作,而且非常好用。

对于取10,000行记录这样的DB2访问操作,使用PDO_ODBC驱动程序时的性能比使用传统的PHPUnifiedODBC扩展要快大约10倍。之所以有这么大的差异,是因为在PDO中默认的游标是轻量级的只能向前移动的游标。

获取

PHP5.1发布时将附带PDO,但是也可以通过PECL这个PHP扩展库(PHPExtensionRepository)来结合使用PDO和PHP5.0.3及以上版本。如果您使用的是Windows,那么您会欣喜地发现安装过程要简单得多。

我将假设您已经拥有配置PHP5使之使用您选择的Web服务器的经验,只有在此假设下,我才能集中精力关注更相关的细节。同样,我还将假设您使用的是一个DB2UniversalDatabase服务器或网络服务器模式下的IBMCloudscape数据库,并且接受了用户为db2inst1、密码为ibmdb2的默认安装选项。如果您自己编译驱动程序,那么在进行编译的机器上,应该安装有DB2客户机,并且存在应用程序开发header,否则编译将遭到失败。

相关词条

相关搜索

其它词条