• PHP PDO 一 : 常用方法


    安装 PDO

    手册阅读方法

    • PDO::XXX() 意味为 PDO 类中可以使用 xxx() 方法。

      例如:

      • PDO::__construct() 为 PDO 构造方法,使用方法为 $pdo = new PDO();
      • PDO::query() 为 PDO 查询方法,使用方法为 $pdo->query($sql)

    相关常用方法

    PDO::__construct()

    • 创建 PDO 对象函数:

      /**
       * 创建一个表示数据库连接的 PDO 实例
       * @param string $dsn 必需。一个数据库基本信息字符串,包含数据库类型、 IP 地址等。
       * @param string $username [optional] 必需。数据库用户名。
       * @param string $password [optional] 必需。数据库口令。
       * @param array $options [optional] 可选。PDO属性设置,关联数组,利用PDO内部的常量进行设置。
       */
      public function __construct ($dsn, $username = null, $password = null, $options = null) {}
      
    • $dsn 格式:

      • 数据库类型:使用英文 : 与后字符分隔,如 mysql:
      • 数据库主机 IP 地址:使用 host=[具体 IP 地址] ,跟在驱动名字之后,如 mysql:host=localhost
      • 端口:使用 port=[端口号],默认为 3306 可以不写,拼凑在驱动名字后,如mysql:host=localhost;port=3306
      • 数据库名:使用 dbname=[数据库名] (可以事先没有)。
      • 注意:
        • 数据库类型 mysql: 后字符串结构不区分先后顺序,如 mysql:host=localhost;port=3306 或者 mysql:port=3306;host=localhost
        • 使用分号和其他驱动分开。
    • 示例:

      //利用变量保存数据来实现数据库初始化
      $dbms='mysql';     //数据库类型
      $host='localhost'; //数据库主机名
      $port='3306';      //数据库端口
      $dbName='test';    //使用的数据库
      $username='root';      //数据库连接用户名
      $password='';          //对应的密码
      $dsn="$dbms:host=$host;port=$port;dbname=$dbName";
      
      //实例化 PDO 对象
      $pdo = new PDO($dsn,$username,$password);
      

    PDO::query()

    • 执行 SQL 语句,返回 PDOStatement 对象,可以理解为结果集。

    • 语法:

      public PDOStatement PDO::query ( string $statement )
      
      public PDOStatement PDO::query ( string $statement , int $PDO::FETCH_COLUMN , int $colno )
      
      public PDOStatement PDO::query ( string $statement , int $PDO::FETCH_CLASS , string $classname , array $ctorargs )
      
      public PDOStatement PDO::query ( string $statement , int $PDO::FETCH_INTO , object $object )
      
    • 示例:

      foreach($pdo->query("SELECT * from DBList") as $row) {
          print $row['name'] . "	";
          print $row['email'] . "
      ";
      }
      

    PDO::exec()

    • 执行一条 SQL 语句,并返回受影响的行数。

      写操作其实本质要注意的是执行SQL时可能出现的错误处理。

    • 语法:

      int PDO::exec ( string $statement )
      
    • PDO::query() 区别:

      PDO::exec() 不会从一条 SELECT 语句中返回结果。对于在程序中只需要发出一次的 SELECT 语句,可以考虑使用 PDO::query()

    • 示例:

      /*  删除 FRUIT 数据表中满足条件的所有行 */
      $count = $pdo->exec("DELETE FROM fruit WHERE colour = 'red'");
      
      /* 返回被删除的行数 */
      print("Deleted $count rows.
      ");
      
    • 如果是插入操作,有时候需要新增记录的自增长ID,可以通过 PDO::lastInsertId() 来获取。

      $id = $pdo->lastInsertId();
      

    断开连接

    • 设 PDO 对象为 null 即可。

      $pdo = null;
      

    错误处理

    PDO::errorCode

    • 获取跟数据库句柄上一次操作相关的 SQLSTATE。

    • 语法:

      mixed PDO::errorCode ( void )
      
    • 示例:

      if(false === $rows){
          //取出错误细信息
          echo 'SQL错误:<br/>';
          echo '错误代码为:' . $pdo->errorCode();
      }
      

    PDO::errorInfo

    • 返回最后一次操作数据库的错误信息。

    • 语法:

      public array PDO::errorInfo ( void )
      
    • 示例:

      if(false === $rows){
          //取出错误细信息
          echo 'SQL错误:<br/>';
          echo '错误原因为:' . $pdo->errorInfo()[2];			
          //errorInfo返回数组,2下标代表错误具体信息
      }
      

    注意

    封装

    • 实际使用PDO的时候,都会进行二次封装,因为PDO的操作有很多本身不够完善。
    • 外部一般需要的只是结果,不考虑过程,所以在实际开发时要考虑二次封装。

    错误抑制符

    • 增加错误抑制符,抑制在初始化过程可能出现的错误。

      function pdo_init () {
          $pdo = @new PDO('mysql:host=localhost;port=3306;dbname=project','root','root');
          ......
      }
      
  • 相关阅读:
    Android Studio中的Java控制台中出现乱码问题?
    博客第二天——头插法建立单链表
    博客志第一天——判断一个整数N是否是完全平方数?
    绝对定位篇
    JavaScript 事件循环
    var与let变量for遍历的问题
    获取url中参数值
    Js不用for,forEach,map等循环实现九九乘法表
    前端常见浏览器兼容性问题
    js常见面试题
  • 原文地址:https://www.cnblogs.com/Yogile/p/14103817.html
Copyright © 2020-2023  润新知