PDO:PHP Data Object,PHP数据对象 是一种纯面向对象的操做风格,在新版的PHP中,PHP封装了一套PDO扩展库,专门用来操做不一样类型的数据库!php
做用:mysql
因为数据库的差别性,各个数据库的调用不是彻底相同的,一样的程序若是使用不一样的数据库存放数据时,须要对程序的数据处理部分进行改动,给移植带来不便。sql
pdo为数据库访问提供了一致的接口,只需在配置的链接参数中,配置不一样的数据库驱动就能够了,而把对数据处理程序的改动下降到最小,甚至不需改动,为数据的处理及安全性都带来了很大的方便。数据库
使用PDO,须要在php.ini中开启PDO扩展,在新版本中默认开启数组
PDO的实例化安全
PDO的类结构函数
PDO构造方法:fetch
一共有四个参数:
$dsn:数据源名称,告诉系统选择哪一种类型的数据库,以及主机名和端口号,选择默认的数据库和默认的字符编码等!
$username:数据库的用户名
$password:数据库的密码
$driver_options:附加选项,通常能够用默认编码
链接成功会返回一个PDO对象。spa
使用PDO实现增删改操做
原理:调用PDO类中的 exec() 方法,若是返回受影响行数不为0(为真),则成功
lastInsertID() 方法,返回最后插入记录的行数
PDO查询操做
query()方法:执行sql语句(通常就是select查询语句),并返回一个PDOStatement类的对象(同mysql操做里的结果集)
#实例化PDO类 $pdo = new PDO($dns,$user,$pass); #sql查询语句 $sql = '查询语句'; #调用query()方法,获得对象赋给$stmt $stmt = $pdo->query($sql);
PDOStatement对象
# PDOStatement对象 经常使用函数 #获取查询结果中的总行数(总记录数) rowCount #获取查询结果中的总列数(总字段数) columnCount #每次从PDOStatement结果集中获取一条记录,同时把指针下移,其中该方法有一个参数 fetch #返回一个结果集中全部的记录,造成一个二维数组!能够用foreach遍历结果 fetchAll #每次获取一列信息中的一条记录(也就是单一值),并将指针下移! #该方法有一个参数,用来表明获取哪一列的信息,第一列为0,第二列为1,缺省值为0,默认为第一列. fetchColumn #做用同 fetch(FETCH_OBJ) fetchObject
fetch:返回一个结果集,参数有以下几个
#相似mysql_fetch_assoc函数,返回一个关联类型的数组 PDO::FETCH_ASSOC #相似之前的mysql_fetch_row函数,返回一个索引数组 PDO::FETCH_NUM #相似mysql_fetch_array,返回一个关联和索引并存的数组,为默认值
PDO::FETCH_BOTH #返回一个对象,其中对象的属性就是字段的值 PDO::FETCH_OBJ
使用语法:
#实例化PDO类 $pdo = new PDO($dns,$user,$pass); #sql查询语句 $sql = '查询语句'; #调用query()方法,获得对象赋给$stmt $stmt = $pdo->query($sql); #分别使用fetch第四个参数获取结果 $stmt ->fetch(PDO::FETCH_ASSOC); $stmt ->fetch(PDO::FETCH_NUM); $stmt ->fetch(PDO::FETCH_BOTH); $stmt ->fetch(PDO::FETCH_OBJ);
以上获取的结果每次从结果集中获取到一条数据,能够用while循环便利出来
#设置一个空数组 $rows = array(); # mysql_fetch_assoc 每次获取一条记录,将结果放到 $row 中 while( $row = $stmt->fetch(PDO::FETCH_ASSOC) ){ #用while循环将每次获得的结果放入数组元素 $rows[] = $row; } var_dump($rows);
PDO的相关属性
PDO的属性都是私有的或者受保护的,外部不能直接修改,可是PDO对象提供了两个操做属性的接口:
PDO::getAttribute // 取回一个数据库链接的属性 PDO::setAttribute // 设置属性
设置属性方面只要一下几个:
PDO::ATTR_AUTOCOMMIT:自动提交 可选值有两个:
0或者1。0表明不开启自动提交,手动使用commit方法;1表明开启自动提交,也是默认值 PDO::ATTR_CASE:返回结果集字段名大小写(重要) 可选值一共有三个: PDO::CASE_LOWER:返回的结果集所有为小写 PDO::CASE_UPPER:返回的结果集所有为大写 PDO::CASE_NATURAL:返回的结果集为正常(原来是什么样返回的仍是什么样,也是默认值) PDO::ATTR_ERRMODE:返回的错误模式(重要) 可选值有三个: PDO::ERRMODE_SILENT:静默模式,也是默认值(出错无任何提示) PDO::ERRMODE_WARNING:警告模式 PDO::ERRMODE_EXCEPTION:异常模式
使用语法举例:
#实例化PDO类 $pdo = new PDO($dns,$user,$pass); #设置属性,将异常模式设置为警告模式 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING); $sql = '一条错误的sql语句'; $stmt = $pdo->query($sql);