一、PDO简介
PDO是PHP Data Object的简称,用于定义数据库访问的抽象层,统一各种数据库的访问接口。PDO有如下特性:
PDO支持的数据库:
但是,需要注意的是,PDO只是提供了一组数据库访问接口,利用PDO本身不能操作任何数据库。
二、PDO对象
利用PDO的构造函数连接特定的数据库,创建一个PDO对象。在利用PDO之前,需要开启PDO扩展。以PHP+MySQL为例,
开启PHP对PDO的扩展:在php.ini中去掉extension=php_pdo.dll的注释。
开启MySQL对PDO的扩展:在my.ini中去掉extension=php_pdo_mysql.dll的注释。
利用phpinfo()可以查看是否开启PDO扩展。
1、连接数据库
PDO连接数据库有三种方式:
1.1 通过参数形式连接(推荐)
$dsn = "mysql:host=localhost;dbname=xxx";
$username = "xxxxx";
$pwd = "xxxx";
$pdo = new PDO($dsn,$username,$pwd);
PDO构造函数还有一个$options参数,它是一个数组,用于配置运行中的数据库,如是否开启自动提交、设置结果集的返回方式等。
1.2 通过uri连接
首先建立一个文件,保存数据源,文件内容形如:mysql:host=localhost;dbname=xxx。然后在程序中引入该文件。
$dsn = "uri:file://保存数据源配置的文件路径";
$username = "xxxxx";
$pwd = "xxxx";
$pdo = new PDO($dsn,$username,$pwd);
1.3 通过配置文件连接
在php.ini中的任意一个位置添加数据源的配置:
pdo.dsn.test=”mysql:host=localhost;dbname=xxxx”;
test是自定义的数据源名称。为方便,可以在php.ini的首行中添加,然后重启服务器,在程序中引入该数据源
$dsn = "test"; //数据源名称
$username = "xxxxx";
$pwd = "xxxx";
$pdo = new PDO($dsn,$username,$pwd);
2、PDO对象的常见方法和属性
方法或属性 | 描述 |
exec() | 执行一条SQL语句,返回受影响的行数。用于增删改,对查询返回0 |
query() | 执行一条SQL语句,返回PDOStatement对象,用于保存结果集 |
prepare() | 执行一条SQL语句,返回PDOStatement对象 |
quote() | 返回一个添加引号的字符串,用于SQL语句,可防止SQL注入 |
lastInsertId | 返回最后插入的ID |
setAttribute() | 设置数据库连接属性 |
getAttribute() | 获取数据库连接属性 |
errorCode() | 获取跟数据库句柄上一次操作相关的SQLSTATE |
errorInfo() | 获取跟数据库句柄上一次操作相关的错误信息 |
beginTransaction() | 开启一个事务。需要先关闭自动提交 |
commit() | 提交事务 |
rollBack() | 回滚事务 |
inTransaction() | 检查操作是否在事务内 |
三、PDOStatement对象
PDO对象的query()和prepare()方法均会返回一个PDOStatement对象,该对象可以用于PDO的预处理执行。其常见方法如下:
方法 | 描述 |
execute() | 执行一条预处理语句 |
rowCount() | 返回上一个SQL语句影响的行数 |
fetch() | 从结果集中获取一行 |
fetchAll() | 返回一个包含结果中所有行的数组 |
setFetchMode() | 设置默认获取结果集的模式 |
fetchObject() | 获取结果集下一行并作为对象返回 |
fetchColumn() | 获取结果集下一行的单独一列 |
bindParam() | 绑定一个参数到指定的变量名 |
bindValue() | 将某个值绑定到指定的参数 |
bindColumn() | 绑定一列到PHP变量 |
getColumnMeta() | 返回结果集中一列的元素据 |
columnCount() | 返回结果中的列数 |
setAttribute() | 设置一个语句属性 |
getAttribute() | 获取一个语句属性 |
errorCode() | 获取跟数据库句柄上一次操作相关的SQLSTATE |
errorInfo() | 获取跟数据库句柄上一次操作相关的错误信息 |
debugDumpparams() | 打印一条SQL预处理语句 |
nextRowset() | 在一个多行集语句句柄中推进到下一个行集 |
四、异常模式
PDO支持三种异常模式:
可以在PDO的构造函数的第四个$options参数或用PDO对象的setAttribute()方法设置。
原文:http://www.ido321.com/1424.html
原文:http://blog.csdn.net/u011043843/article/details/44150239