《第15次PDO数据库抽象层》由会员分享,可在线阅读,更多相关《第15次PDO数据库抽象层(11页珍藏版)》请在金锄头文库上搜索。
1、PDO数据库抽象层,Logo,在php的早期版本中,各种不同的数据库扩展(Mysql、Oracle、MS SQL)根本没有真正的一致性,虽然他们都可以实现相同的功能,但是这些扩展确互不兼容,都有各自的操作函数,结果导致对php开发程序的维护非常困难,可移植性也非常差。为了解决这些问题,php的开发人员编写了一种轻型、便利的API来统一各种数据库,从而达到PHP脚本最大程度的抽象和兼容性,这就是数据库抽象层。 什么是PDO 安装PDO PDO连接数据库 PDO中执行SQL语句 PDO中获取结果集 PDO中错误处理 PDO中事务处理,什么是PDO,PDO是PHP Date Object(PHP数据
2、对象)的简称,它是与PHP 5.1版本一起发行的,目前支持的数据库包括Firebird、FreeTDS、Interbase、MySQL、MS SQL Server、ODBC、Oracle、Postgre SQL、SQLite和Sybase。有了PDO,您不必再使用mysql_*函数、oci_*函数或者mssql_*函数,也不必再为它们封装数据库操作类,只需要使用PDO接口中的方法就可以对数据库进行操作。在选择不同的数据库时,只需修改PDO的DSN(数据源名称)。,安装PDO,PDO是与PHP5.1一起发行的,默认包含在PHP5.1中,由于PDO需要PHP5核心面向对象特性的支持,因此无法在PH
3、P5.0之前的版本中使用 默认情况下,PDO是PHP5.2中为开启状态,但是要启用对某个数据库驱动程序的支持,仍需要进行相应的配置操作 要启用PDO首先必须加载“extension=php_pdo.dll”,如果想要支持某个具体的数据库,那么还要加载对应的数据选项,例如要支持Mysql数据库,则需要加载“extension=php_pdo_mysql.dll”,PDO连接数据库,PDO连接不同的数据库,主要应用的是PDO构造函数,传递不同的数据源、类型、数据库名称、密码等等,进而实现与不同数据库的统一连接,统一操作。 构造函数的语法如下: _construct(string $dsn,stri
4、ng $username,string $password,array $driver_options) 参数说明如下: dsn:数据源名,包括主机名端口号和数据库名称。 username:连接数据库的用户名。 password:连接数据库的密码。 driver_options:连接数据库的其他选项。15-1,PDO中执行SQL语句,在PDO中执行SQL语句有三种方法, (1)exec()方法:返回执行后受影响的行数。 语法:int PDO:exec ( string statement ) 说明:参数statement是要执行的SQL语句。该方法返回执行查询时受影响的行数,通常用于INSER
5、T、DELETE和UPDATE语句中。15-2 (2)query()方法:通过用于返回执行查询后的结果集 语法:PDOStatement PDO:query ( string statement ) 说明:参数statement是要执行的SQL语句。它返回的是一个PDOStatement对象。 15-3,Logo,(3)预处理语句prepare()和execute() 首先,通过prepare()方法做查询的准备工作,然后,通过execute()方法执行查询。并且还可以通过bindParam()方法来绑定参数提供给execute()方法。 其语法如下: PDOStatement PDO:pre
6、pare ( string statement) bool PDOStatement:execute () public bool PDOStatement:bindParam ( mixed $parameter , mixed &$variable),PDO中执行SQL语句,PDO中获取结果集,PDO中获取结果集的方法同样有3三种 (1)fetch()方法获取结果集中的下一行 语法: mixed PDOStatement:fetch (int fetch_style) 说明: 参数fetch_style:控制结果集的返回方式 PDO:FETCH_ASSOC关联数组形式 PDO:FETCH_
7、NUM数字索引数组形式 PDO:FETCH_BOTH两者数组形式都有,这是缺省的 PDO:FETCH_OBJ按照对象的形式15-50、15-5,(2)fetchAll()方法获取结果集中的所有行 语法: array PDOStatement:fetchAll ( int fetch_style ) 参数fetch_style:控制结果集中数据的显示方式。 其返回值是一个包含结果集中所有数据的二维数组 (3)fetchColumn()方法获取结果集中下一行指定列的值 语法:string PDOStatement:fetchColumn ( int column_number ) 说明:可选参数c
8、olumn_number设置行中列的索引值,该值从0 开始。如果省略该参数则将从第1列开始取值。,PDO中获取结果集,PDO中错误处理,PDO中有2种获取程序中错误信息的方法: (1)errorCode()方法 errorCode()方法用于获取在操作数据库句柄时所发生的错误代码。 其语法格式如下: int PDOStatement:errorCode ( void ) errorCode()方法返回一个SQLSTATE,SQLSTATE是由5个数字和字母组成的代码。 (2)errorInfo()方法 errorInfo()方法用于获取操作数据库句柄时所发生的错误信息。 语法:array PD
9、OStatement:errorInfo ( void ) errorInfo()方法的返回值为一个数组,它包含了相关的错误信息。,PDO中事务处理,在PDO中实现事务处理的功能,其应用的方法如下: (1)开启事务beginTransaction()方法 beginTransaction()方法将关闭自动提交(autocommit)模式,直到事务提交或者回滚以后才恢复。 (2)提交事务commit()方法 commit()方法完成事务的提交操作,成功则返回TRUE,否则返回FALSE。 (3)事务回滚rollback()方法 rollback()方法执行事务的回滚操作。 通过prepare()和execute()方法向数据库中添加数据,并通过事务处理机制确保数据能正确地添加到数据库中。,