简介
PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。 注意利用 PDO 扩展自身并不能实现任何数据库功能;必须使用一个 具体数据库的 PDO 驱动 来访问数据库服务。
PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 不提供 数据库 抽象层;它不会重写 SQL,也不会模拟缺失的特性。如果需要的话,应该使用一个成熟的抽象层。
从 PHP 5.1 开始附带了 PDO,在 PHP 5.0 中是作为一个 PECL 扩展使用。 PDO 需要PHP 5 核心的新 OO 特性,因此不能在较早版本的 PHP 上运行。
官方文档:http://php.net/manual/zh/book.pdo.php
基本使用
连接
<?php
$dbms='mysql'; //数据库类型
$host='localhost'; //数据库主机名
$dbName='test'; //使用的数据库
$user='root'; //数据库连接用户名
$pass=''; //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";
try {
$dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象
} catch (PDOException $e) {
die ("Error!: " . $e->getMessage() . "<br/>");
}
查询
$sql="SELECT * FROM article";
$result=$dbh->query($sql);
遍历结果集
if($result->columnCount()>0){
/*
*PDO::FETCH_NUM 返回索引数组
*PDO::FETCH_ASSOC 返回关联数组
*PDO::FETCH_OBJ 返回对象
*/
while ($arr=$result->fetch(PDO::FETCH_NUM)){
var_dump($arr);
}
}
错误处理模式
PDO::ERRMODE_SLIENT 默认模式,静默模式
PDO::ERRMODE_WARNING 警告模式
PDO::ERRMODE_EXCEPTION 异常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING)
数据库的连接属性
设置属性方式一
$pdo=new PDO($dns,$user,$pwd,$option)
注:$option是一个数组
$option=array(
PDO::ATTR_ERRMODE=>0,
PDO::ATTR_AUTOCOMMIT
)
设置属性方式二
$pdo->setAttribute(PDO::ATTR_ERRMODE,0)
获取连接属性
$pdo->getAttribute(PDO::ATTR_ERRMODE)
事务的使用
// 关闭自动提交
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0)
try{
$pdo->beginnTransaction()
// 业务逻辑
if(/*业务逻辑没有正确执行*/ ){
throw new Excepotion('错误描述','错误代码');
}
// 业务都正常则提交事务
$pdo->commit();
}catch(Excepotion $e){
// 回滚事务
$pdo->rollBack();
}
- PDO — PDO 类
- PDO::__construct — 创建一个表示数据库连接的 PDO 实例
- PDO::beginTransaction — 启动一个事务
- PDO::commit — 提交一个事务
- PDO::rollBack — 回滚一个事务
- PDO::inTransaction — 检查是否在一个事务内
- PDO::exec — 执行一条 SQL 语句,并返回受影响的行数
- PDO::query — 执行 SQL 语句,以 PDOStatement 对象形式返回结果集
- PDO::quote — 为 SQL 查询里的字符串添加引号
- PDO::prepare — 准备要执行的语句,并返回语句对象
- PDO::lastInsertId — 返回最后插入行的ID或序列值
- PDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE
- PDO::errorInfo — 获取跟数据库句柄上一次操作相关的错误信息
- PDO::setAttribute — 设置属性
- PDO::getAttribute — 取回一个数据库连接的属性
- PDO::getAvailableDrivers — 返回一个可用驱动的数组
- PDOStatement — PDOStatement 类
- PDOStatement::bindParam — 绑定一个参数到指定的变量名
- PDOStatement::bindColumn — 绑定一列到一个 PHP 变量
- PDOStatement::bindValue — 把一个值绑定到一个参数
- PDOStatement::execute — 执行一条预处理语句
- PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数
- PDOStatement::fetch — 从结果集中获取下一行
- PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组
- PDOStatement::fetchColumn — 从结果集中的下一行返回单独的一列。
- PDOStatement::columnCount — 返回结果集中的列数
- PDOStatement::getColumnMeta — 返回结果集中一列的元数据
- PDOStatement::nextRowset — 在一个多行集语句句柄中推进到下一个行集
- PDOStatement::fetchObject — 获取下一行并作为一个对象返回。
- PDOStatement::closeCursor — 关闭游标,使语句能再次被执行。
- PDOStatement::debugDumpParams — 打印一条 SQL 预处理命令
- PDOStatement::errorCode — 获取跟上一次语句句柄操作相关的 SQLSTATE
- PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息
- PDOStatement::setAttribute — 设置一个语句属性
- PDOStatement::setFetchMode — 为语句设置默认的获取模式。
- PDOStatement::getAttribute — 检索一个语句属性
- PDOException — PDOException 异常类
- PDO 驱动
- CUBRID (PDO) — CUBRID Functions (PDO_CUBRID)
- MS SQL Server (PDO) — Microsoft SQL Server and Sybase Functions (PDO_DBLIB)
- Firebird (PDO) — Firebird Functions (PDO_FIREBIRD)
- IBM (PDO) — IBM Functions (PDO_IBM)
- Informix (PDO) — Informix Functions (PDO_INFORMIX)
- MySQL (PDO) — MySQL Functions (PDO_MYSQL)
- MS SQL Server (PDO) — Microsoft SQL Server Functions (PDO_SQLSRV)
- Oracle (PDO) — Oracle Functions (PDO_OCI)
- ODBC and DB2 (PDO) — ODBC and DB2 Functions (PDO_ODBC)
- PostgreSQL (PDO) — PostgreSQL Functions (PDO_PGSQL)
- SQLite (PDO) — SQLite Functions (PDO_SQLITE)
- 4D (PDO) — 4D Functions (PDO_4D)