• PDO 数据访问抽象层


    PDO(PHP data object):

    PHP 数据对象PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。 注意利用 PDO 扩展自身并不能实现任何数据库功能;必须使用一个 具体数据库的 PDO 驱动 来访问数据库服务。

    PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 不提供 数据库 抽象层;它不会重写 SQL,也不会模拟缺失的特性。如果需要的话,应该使用一个成熟的抽象层。 

                                                                                                                      驱动名称                                支持的数据库类型

    PDO_CUBRID Cubrid
    PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase
    PDO_FIREBIRD Firebird/Interbase 6
    PDO_IBM IBM DB2
    PDO_INFORMIX IBM Informix Dynamic Server
    PDO_MYSQL MySQL 3.x/4.x/5.x
    PDO_OCI Oracle Call Interface
    PDO_ODBC ODBC v3 (IBM DB2, unixODBC and win32 ODBC)
    PDO_PGSQL PostgreSQL
    PDO_SQLITE SQLite 3 及 SQLite 2
    PDO_SQLSRV Microsoft SQL Server / SQL Azure
    PDO_4D 4D

    用法:

    1.造对象

      $dsn = $dsn = "mysql:dbname=mydb;host=localhost";

      $pdo = new PDO($dsn,"root","123");

    2.写SQL语句

      $sql = "select * from  info";

    或者$sql = "insert into info values ("xxx","xxx")";

    3.执行语句:

      $a = $pdo->query($sql);

     

    PDO事务功能:

    能够控制语句同时成功同时失败,失败时可以回滚。
    方法:
      
    //1.造对象
    $dsn = "mysql:dbname=mydb;host=localhost";
    $pdo = new PDO($dsn,"root","123");
    
    //2.设置异常模式
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    
    //3.捕获异常
    try{
        //要执行的代码
        //开启事务功能
        $pdo->beginTransaction();
        
        $sql = "insert into nation values('n018','人族')";
        $sql1 = "insert into nation values('n019','回族')";
        $pdo->query($sql);
        $pdo->query($sql1);
        
        //提交事务执行
        $pdo->commit();
    
    }catch(Exception $e){
        //echo $e->getMessage();
        //回滚
        $pdo->rollBack();
    }

    防SQL注入攻击:

    $dsn = "mysql:dbname=mydb;host=localhost";
    $pdo = new PDO($dsn,"root","123");
    //第一种:用“?”占位符
    $sql = "insert into nation values(?,?)";
    //第二种:关联索引
    //$sql = "insert into nation values(:code,:name)";
    //$stm = $pdo->prepare($sql);
    //$arr = array("code"=>"xxx","name"=>"xxx");
    
    //将SQL语句放到服务器等待执行
    $stm = $pdo->prepare($sql);
    //将参数传递到服务器开始执行
    $arr = array("xxx","xxx");
    $stm->execute($arr); 
  • 相关阅读:
    生成15位或者4位随机数 (主要用于微信支付订单号)
    支付签名 MD5Util 排序工具类
    JVM垃圾回收(GC)
    JVM内存区域
    Java实现经典七大经典排序算法
    Java设计模式之装饰者模式
    Java设计模式之单例模式
    提前批笔试一道算法题的Java实现
    Java设计模式之工厂模式
    文件上传和下载
  • 原文地址:https://www.cnblogs.com/rose1324/p/8360162.html
Copyright © 2020-2023  润新知