山山未迟

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

image

 

回顾

方法重写:是因为对象的访问会先去子类的类空间找,从而形成了对父类的覆盖。

继承链:类只能单继承,但是可以通过继承链来实现多继承

特殊类:final类和抽象类

接口:interface

PHP重载:当访问一个权限不够或者不存在的属性或者方法的时候,会自动触发的魔术方法。

属性重载和方法重载

对象的保存和还原:serialize和unserialize(对应的类已经在内存:如果有资源属性必须进行重新加载资源),魔术方法(__sleep和__wakeup)

对象遍历:默认只能遍历public属性,实现接口Iterator

需求:手里有一个大项目,需要支持多种数据库(Oracle,mysql),采用面向对象的方式去实现。分成两个团队进行不同数据库的支持。

clip_image002

上面的管理方式是直接使用PHP的源代码去管理不同的数据库,PHP后来增加了一个中间层来管理不同的数据库(PDO),php脚本只需要去操作PDO就能够实现对不同数据库的操作。

clip_image004

回顾................................................................................................................................. 1

PDO.................................................................................................................................. 3

介绍PDO................................................................................................................... 3

PDO扩展加载............................................................................................................ 5

PDO操作................................................................................................................... 6

PDO增删改查............................................................................................................ 7

新增操作............................................................................................................ 7

修改数据............................................................................................................ 7

查询数据............................................................................................................ 8

错误处理.......................................................................................................... 11

预处理............................................................................................................................ 11

预处理语法.............................................................................................................. 11

预处理意义.............................................................................................................. 12

PDO预处理..................................................................................................................... 12

预处理执行流程....................................................................................................... 12

PDO事务处理................................................................................................................. 14

PDO属性........................................................................................................................ 16

PDO异常........................................................................................................................ 17

反射............................................................................................................................... 19

封装PDO........................................................................................................................ 21

PDO

介绍PDO

1. 什么是PDO?

PDO:PHP data object,php数据对象,也叫php数据抽象层,是一种能够管理多种不同数据库的数据对象,PHP只需要去调用PDO,而不用去在意PDO底层管理的数据库到底是采用什么样的方式,哪些方法来实现的功能。让PHP操作数据库变得简单。

PDO不止是一个类:而是三个类:PDO类,PDOStatement类,PDOException类

clip_image006

PDO类:主要负责数据库的连接操作以及初始化,能够向服务器发送SQL语句

clip_image008

PDOStatement类:负责处理所有有结果的信息

clip_image010

PDOException类:异常处理类,获取对应可能出错的错误信息,然后采用对象的形式去处理错误

clip_image012

PDO扩展加载

1. 开启扩展:PDO本身的扩展(高版本的PHP默认是开启的),PDO对应数据库的扩展

clip_image014

2. 指定扩展路径

clip_image016

3. 重启Apache生效

PDO操作

1. 连接认证

new PDO():得到一个PDO类的对象,这个对象就可以调用PDO类的所有方法

三个参数

$dsn:数据库类型:host=主机地址;port=端口号;dbname=数据库

$user:用户名

$pass:密码

clip_image018

2. 准备SQL语句,发送给服务器,得到的服务器执行后的结果

必须区分SQL语句到底是什么操作:写操作使用exec,读操作使用query

PDOStatement query:将结果得到之后,返回一个PDOStatement类的对象,因为PDOStatement类是专门用于数据操作的。

clip_image020

3. 解析数据:通过PDOStatement类对象来实现获取对应的数据

在PDOStatement类中,提供了一系列的fetch方法来获取数据

fetch:获取查询结果中的一条记录,同时会将操作指针下移

clip_image022

4. 释放资源:PDO没有提供释放资源的接口(方法)

$pdo = null;//没有明显的意义,因为不会影响PDOStatement类的对象对数据查询的操作。

clip_image024

PDO增删改查

新增操作

clip_image026

修改数据

clip_image028

删除数据与修改数据完全一样,只是SQL语句不一样而已。

查询数据

解析数据方法:PDOStatement类提供的方法

fetch:从结果中获取一行记录,默认返回一个混合数组

fetch_style:

clip_image030

效果

clip_image032

遍历所有结果

clip_image034

fetchAll:取得所有的结果,形成一个二维数组

clip_image036

注意:fetchAll也可以通过指定fetch_style来确定采用什么方式返回数据。

fetchObject:将数据获取到一个对象里面

clip_image038

可以通过指定类,来得到不同类的对象。

clip_image040

fetchColumn:获取指定列的数据

clip_image042

bindColumn:将指定列的数据绑定到一个外部变量,然后在数据fetch操作的时候,会将对应列的数据,直接放到对应的变量当中,然后可以通过直接使用变量相当于操作对应的字段的值。bindColumn必须配合fetch_style的PDO::FETCH_BOUND

先将一个变量绑定到对应的“结果集”;然后再进行获取数据

clip_image044

注意:绑定如果是采用索引进行绑定,索引从1开始表示第一列

可以通过字段名来绑定变量

clip_image046

修改查询模式:setFetchMode,可以一次性修改所有的fetch模式,以后按照指定的模式进行fetch就可以了。

clip_image048

错误处理

任何的SQL语句都有可能执行错误,SQL的错误处理模式都是静默模式,出了错也不会报错,需要对SQL的执行结果进行错误的处理。

PDO::errorCode:获取错误代码

PDO::errorInfo:获取错误信息

 

clip_image002[1]

posted on 2016-04-21 23:13  山山未迟  阅读(488)  评论(0编辑  收藏  举报