18.4 创建PDO工具
利用PDO在与不同数据库管理系统之间交互时,PDO工具中的成员的方法是统一各种数据库的访问接口,以是在利用PDO与数据库交互之前,首先要创建一个PDO工具。在通过布局方法创建工具的同时,须要建立一个与数据库做事器的连接,并选择一个数据库。PDO的布局方法原型如下:
__construct ( string dsn [, string username [, string password [, array driver_options]]] ) //PDO的布局方法

在布局方法中,第一个必选的参数是数据源名(DSN),用来定义一个确定的数据库和必须用到的驱动程序。DSN的PDO命名老例为PDO驱动程序的名称,后面跟一个冒号,再后面是可选的驱动程序的数据库连接变量信息,如主机名、端口和数据库名。例如,连接Oracle做事器和连接MySQL做事器的DSN格式分别如下:
oci:dbname=//localhost:1521/mydb //连接Oracle做事器的DSN,oci:作为驱动前缀,主机localhost,端口1521,数据库mydb
MySQL:host=localhost;dbname=testdb //连接MySQL做事器的DSN,MySQL:作为驱动前缀,主机localhost,数据库testdb
布局方法中的第二个参数username和第三个参数password分别指定用于连接数据库的用户名和密码,是可选参数。末了一个参数driver_options须要一个数组,用来指定连接所需的所有额外选项,通报附加的调优参数到PDO或底层驱动程序。
18.4.1 以多种办法调用布局方法
可以多种办法调用布局方法创建PDO工具。下面以连接MySQL和Oracle做事器为例,分别先容布局方法的多种调用办法。
1.将参数嵌入布局函数
不才面的连接Oracle做事器的示例中,在DSN字符串中加载OCI驱动程序并指定了两个可选参数:第一个是数据库名称;第二个是字符集。利用特定的字符集连接一个特定的数据库;如果不指定任何信息,会利用默认的数据库。代码如下所示:
OCI:dbname=accounts见告PDO它该当利用OCI驱动程序,并且该当利用accounts数据库。对付MySQL驱动程序,第一个冒号后面的所有内容都将被用作MySQL的DSN。连接MySQL做事器代码如下所示:
其他驱动程序会同样以不同的办法阐明它的DSN。如果无法加载驱动程序,或者连接失落败,则会抛出一个PDOException,以便开拓职员决定如何最好地处理该故障。省略try…catch掌握构造并无裨益,如果在运用程序的较高等别没有定义非常处理的办法,则在无法建立数据库连接的情形下,终止该脚本。
2.将参数存放在文件中
在创建PDO工具时,可以把DSN字符串放在另一个本地或远程文件中,并在布局函数中引用这个文件。代码如下所示:
只要将文件/usr/local/dbconnect中的DSN驱动改变,就可以在多个数据库系统之间切换,但要确保该文件由卖力实行PHP脚本的用户所拥有,而且此用户拥有必要的权限。
3.引用php.ini文件
只要在php.ini文件中把DSN信息赋给一个名为pdo.dsn.aliasname的配置参数,就可以在PHP做事器的配置文件中掩护DSN信息,这里aliasname是后面将供应给布局函数的DSN别名。如下所示,连接Oracle做事器,在php.ini中为DSN指定的别名为oraclepdo:
[PDO]
pdo.dsn.oraclepdo=\公众OCI:dbname=//localhost:1521/mydb;charset=UTF-8\"大众;
重新启动Oracle做事器,就可以在PHP程序中调用PDO布局方法时,在第一个参数中利用这个别名,代码如下所示:
4.PDO与连接有关的选项
在创建PDO工具时,有一些与数据库连接有关的选项,可以将必要的几个选项组成数组通报给布局方法的第四个参数driver_opts,用来通报附加的调优参数到PDO或底层驱动程序。PDO的一些与数据库连接有关的选项如表18-2所示。
表18-2 PDO的一些与数据库连接有关的选项
设置选项名为下标组成的关联数组,作为驱动程序特定的连接选项,通报给PDO布局方法的第四个参数。不才面的示例中利用连接选项创建持久连接,持久连接的好处是能够避免在每个页面实行时都打开和关闭数据库做事器连接,速率更快。如MySQL数据库的一个进程创建了两个连接,PHP则会把原有连接与新的连接合并为一个连接。代码如下所示:
18.4.2 PDO工具中的成员方法
当PDO工具创建成功后,与数据库的连接已经建立,就可以利用该工具了。PHP与数据库做事器之间的交互都是通过PDO工具中的成员方法实现的,PDO工具中的成员方法如表18-3所示。
表18-3 PDO工具中的成员方法(共13个)
从表18-3中PDO工具中的成员方法可以看出,利用PDO工具可以完成与数据库做事器之间的连接管理、存取属性、缺点处理、查询实行、预处理语句,以及事务等操作。