18.4 建立PDO对象php
使用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,数据库mydboracle
MySQL:host=localhost;dbname=testdb //链接MySQL服务器的DSN,MySQL:做为驱动前缀,主机localhost,数据库testdb函数
构造方法中的第二个参数username和第三个参数password分别指定用于链接数据库的用户名和密码,是可选参数。最后一个参数driver_options须要一个数组,用来指定链接所需的全部额外选项,传递附加的调优参数到PDO或底层驱动程序。3d
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对象能够完成与数据库服务器之间的链接管理、存取属性、错误处理、查询执行、预处理语句,以及事务等操做。