《细说PHP》第四版 样章 第18章 数据库抽象层PDO 4

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/ITXDL123/article/details/99935147

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对象可以完成与数据库服务器之间的连接管理、存取属性、错误处理、查询执行、预处理语句,以及事务等操作。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券