PDO 常用的增删改查

2016-10-11

萌新第一次接触PDO,记录的增删改查一些操作和一些函数

查询

  可以使用PDO::query()方法来执行一个select语句。

  • 用法

    note

    可以通过$stmt->rowCount()来获取结果行数
    
    • 1、透过pdo->query

      1
      $res = pdo->query('select * from studentinfo');
    - ##### 摘要  
        直接`$res->fetchAll()`或者遍历`$res`会使用`PDO::FETCH_BOTH`输出,即输出结果中同时包含索引和数字。
    
    - ##### 返回值
    
        成功返回`PDOStatement`对象,失败返回`false`
    
    • 2、PDO预处理方式

      1
      2
      3
      4
      5
      6
      $sql = "select * from studentinfo";
      $stmt = $pdo->prepare($sql1);
      $arr = ['张歆艺', 22];
      $res = $stmt->execute();
      print_r($stmt->fetchAll(PDO::FETCH_ASSOC));//可以直接操作PDOStatement
      • 返回值和错误处理

        PDOStatement::execute()返回布尔值
        错误管理通过PDOStatement::errorInfo()完成
  • 取查询结果

    三种显示方式
    在取出结果集的时候,结果集有三种显示样式:

    • PDO::FETCH_ASSOC 关联索引
    • PDO::FETCH_NUM 数字索引
    • PDO::FETCH_BOTH 两种都有

      默认是PDO::FETCH_BOTH
      这个常量可以在fetchAll()或者fetch()中使用。

    1. 直接遍历PDOStatement

      1
      2
      3
      foreach($res as $row){
      print_r($row);
      }

      默认:PDO::FETCH_BOTH

    2. fetchAll:得到全部结果集

      1
      2
      3
      foreach($res->fetchAll(PDO::FETCH_ASSOC) as $row){
      print_r($row);
      }
    3. fetch:得到一条结果集

      1
      print_r($res->fetch($pdo::FETCH_ASSOC));

      也可以用fetch遍历所有结果集

      1
      2
      3
      while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
      print_r($row);
      }

增删改

  • 1、透过PDO

    PDO::exec()方法可以执行一条SQL语句,并返回受影响行数.

    • 返回值
      成功返回受影响行数,失败返回false
    • 插入一条记录
      1
      2
      $sql = "insert into studentinfo(name,a1ge,class,sex)values('张潇',19,'图形图像','m')";
      $res = $pdo->exec($sql);

      通过判断$res的值可以判断运行是否成功。

    • 取错误信息

      如果语句运行发生错误
      可以通过PDO::errorInfo()获取错误细节:

      1
      print_r($pdo->errorInfo());

      这是一个数组,结构如下:

      1
      2
      3
      4
      5
      6
      Array
      (
      [0] => 42S22 //pdo错误代码
      [1] => 1054 //数据库错误代码
      [2] => Unknown column 'a1ge' in 'field list'// 数据库错误信息
      )
    • 取自增ID
      1
      $pdo->lastInsertId()
  • 2、透过PDOStatement预处理对象

    • 返回值

      PDOStatement::execute()返回一个布尔值

      1
      2
      3
      4
      5
      $sql = "insert into studentinfo(name,age,class,sex)values(?,?,'图形图像','m')";
      $stmt = $pdo->prepare($sql);
      $arr = ['张歆艺', 22];
      $res = $stmt->execute($arr);
      var_dump($res);
    • 取回自增ID

      同样的,使用$pdo->lastInsertId()来取回自增ID。

    • 错误处理
      PDOStatement使用PDOStatement::errorInfo()来获取错误信息数组。
  • 常用的方法

    • PDOStatement::columnCount()统计结果集列数
    • PDOStatement::rowCount()统计上一条语句影响行数
    • PDOStatement::errorInfo()返回上条语句运行错误数组
    • PDO::errorInfo()返回PDO的上条语句运行的错误数组.
    • PDO::prepare()准备一份SQL语句并返回一个预处理对象PDOStatement
    • PDO:exec()运行一个SQL语句并返回受影响行数,失败返回false
    • PDO::beginTransaction开始一个事务
    • PDO::lastInsertId返回上一条语句插入的自增ID
    • PDO::commit提交一个事务
    • PDO::rollback回滚一个事务
    • PDO::query进行一个SQL查询,成功返回PDOStatement,失败返回false
    • PDOStatement::fetch()从结果集中获取下一行
    • PDOStatement::fetchAll()获取所有结果集数组
    • PDOStatement::execute()运行一个预处理语句