zoukankan      html  css  js  c++  java
  • 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); 
  • 相关阅读:
    元素定位8种方法
    excel做数据驱动
    selenium colse()与quit()方法的区别
    flask 获取request参数的几种形式
    hdu1272
    土地征用
    任务安排
    征途
    锯木厂选址
    特别行动队
  • 原文地址:https://www.cnblogs.com/rose1324/p/8360162.html
Copyright © 2011-2022 走看看