PDO精讲
@(PHP篇)
PDO 概述
PDO简介
- PDO是(PHP DATA OBJECT)的简称
- PDO是系统工具类
- PDO可以解决跨数据库访问的能力,不在需要
mysql_**
mssql_**
等不同数据库类型的语句
PDO开启扩展
打开PDO扩展,在php.ini
文件中,extension=php_pdo_mysql.dll
注释去掉
PDO连接mysql
- 创建一个PDO的实例并连接数据库
- 示例代码
private function getInstance(){
$dsn = "{$this->db_type}:host={$this->db_host};port={$this->db_port};dbname={$this->db_name};charset={$this->charset}";
$this->pdo = new PDO($dsn,$this->db_user,$this->db_pass);
}
PDO对象常用方法
- PDO::beginTransaction — 启动一个事务
- PDO::commit — 提交一个事务
- PDO::__construct — 创建一个表示数据库连接的 PDO 实例
- PDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE
- PDO::errorInfo — Fetch extended error information associated with the last operation on the database handle
- PDO::exec — 执行一条 SQL 语句,并返回受影响的行数
- PDO::getAttribute — 取回一个数据库连接的属性
- PDO::getAvailableDrivers — 返回一个可用驱动的数组
- PDO::inTransaction — 检查是否在一个事务内
- PDO::lastInsertId — 返回最后插入行的ID或序列值
- PDO::prepare — Prepares a statement for execution and returns a statement object
- PDO::query — Executes an SQL statement, returning a result set as a PDOStatement object
- PDO::quote — Quotes a string for use in a query.
- PDO::rollBack — 回滚一个事务
- PDO::setAttribute — 设置属性
PDO::exec()
PDO::query()
PDO::setAttribute()
- 常用的属性名称:
- PDO::ATTR_CASE:强制列名为指定的大小写。
- PDO::CASE_LOWER:强制列名小写。
- PDO::CASE_NATURAL:保留数据库驱动返回的列名。
- PDO::CASE_UPPER:强制列名大写。
- PDO::ATTR_ERRMODE:错误报告。
- PDO::ERRMODE_SILENT: 仅设置错误代码。
- PDO::ERRMODE_WARNING: 引发 E_WARNING 错误
- PDO::ERRMODE_EXCEPTION: 抛出 exceptions 异常。
- PDO::ATTR_DEFAULT_FETCH_MODE: 设置默认的提取模式。
- PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组
- PDO::FETCH_BOTH(默认):返回一个索引为结果集列名和以0开始的列号的数组
- PDO::FETCH_NUM:返回一个索引为以0开始的结果集列号的数组
PDO结果集对象常用方法
PDO类的query()的返回结果,就是结果集对象,也就是PDOStatement类的对象。
- PDOStatement — PDOStatement 类
- PDOStatement::bindColumn — 绑定一列到一个 PHP 变量
- PDOStatement::bindParam — 绑定一个参数到指定的变量名
- PDOStatement::bindValue — 把一个值绑定到一个参数
- PDOStatement::closeCursor — 关闭游标,使语句能再次被执行。
- PDOStatement::columnCount — 返回结果集中的列数
- PDOStatement::debugDumpParams — 打印一条 SQL 预处理命令
- PDOStatement::errorCode — 获取跟上一次语句句柄操作相关的 SQLSTATE
- PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息
- PDOStatement::execute — 执行一条预处理语句
- PDOStatement::fetch — 从结果集中获取下一行
- PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组
- PDOStatement::fetchColumn — 从结果集中的下一行返回单独的一列。
- PDOStatement::fetchObject — 获取下一行并作为一个对象返回。
- PDOStatement::getAttribute — 检索一个语句属性
- PDOStatement::getColumnMeta — 返回结果集中一列的元数据
- PDOStatement::nextRowset — 在一个多行集语句句柄中推进到下一个行集
- PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数
- PDOStatement::setAttribute — 设置一个语句属性
- PDOStatement::setFetchMode — 为语句设置默认的获取模式。
PDOStatement::fetch()
- 描述: 从结果集中获取一行,并下移指针.
- 语法:
mixed PDOStatement::fetch([int $fetch_style])
- 参数: $fetch_style 指定返回的数组的类型
- PDO::FETCH_ASSOC: 返回索引为集列名的数组
- PDO::FETCH_NUM : 返回索引为数值的数组
- PDO::FETCH_BOTH (默认) : 返回数值和集列名的数组
PDOStatement::fetchAll()
- 描述: 从结果集中获取所有行的数组
- 语法: array PDOStatement::fetchAll([int $fetch_style])
- 参数: 同
fetch()
.
PDOStatement::rowCount()
- 描述: 返回受影响的行数
- 语法:
int PDOStatement::rowCount(void)
PDO错误处理方式
错误处理概述
- 错误处理的方式有三种:静默模式,警告模式,异常模式;
- 静默模式:当PDO出错时不会显示错误信息
- 警告模式:当PDO出错时,以PHP的方式显示错误信息.
- 异常模式:当PDO出错时,应先捕获异常,再输出错误信息.
静默模式(silent) (默认)
可以通过PDO->errorCode()
和PDO->errorInfo()
注:状态码为00000
时则没有错误;
警告模式(PHP方式)
设置警告模式的方式
PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
异常模式
设置异常模式的方式
PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
获取异常的语法
try{
$sql = "SELECT * FROM studnet id=adb";
$PDOStatement = $pdo->query($sql);
}catch(PDOStatement $e){
$str = "错误状态码:".$e->getCode();
$str.= "<br>错误行号:".$e->getLine();
$str.= "<br>错误文件:".$e->getFile();
$str.= "<br>错误信息:".$e->getMessage();
echo $str;
}