PDO详解

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;
}

猜你喜欢

转载自blog.csdn.net/m0_37532027/article/details/79841213
PDO