php基础-PDO基础

1.1 实例化PDO对象

<?php
    $dsn = "mysql:host=127.0.0.1;dbname=test;port=3306;charset=utf8";
    $user = 'root';
    $passwd = 'root';
    $pdo = new PDO($dsn,$user,$passwd);  //实例化pdo对象
    
    echo '<pre>';
    /*
    var_dump返回结果如下:
            object(PDO)#1 (0) {
            }
     */

1.2PDO的exec方法,执行增删改操作。

    $sql2 = "insert into user values('admin2','aaaaa',25)";
    $pdo -> exec($sql2);     //exec方法执行sql语句,增删改。
    

1.3 PDO的query方法,执行查询方法,返回PDOstatement对象。

 1.31返回PDOstatement对象。  

$sql = "select * from user";
    $pdo_statement = $pdo -> query($sql);
    var_dump($pdo_statement);   //query方法执行查询sql语句,返回pdostatement对象
    /*
        var_dump返回结果如下:
        
        object(PDOStatement)#2 (1) {
          ["queryString"]=>
          string(18) "select * from user"
        }
    */

1.32 fetch方法,获取一条数据,返回关联数组和索引数组。

$res = $pdo_statement -> fetch();  //获取一条数据,返回索引数组加关联数组
    /*
    var_dump返回结果如下:
            array(6) {
      ["name"]=>
      string(5) "admin"
      [0]=>
      string(5) "admin"
      ["passwd"]=>
      string(6) "123456"
      [1]=>
      string(6) "123456"
      ["age"]=>
      string(2) "22"
      [2]=>
      string(2) "22"
    }
    
    */

1.33

fetchall方法,获取所有数据,返回索引数组和关联数组。

$res = $pdo_statement -> fetchall();  //获取所有数据,返回索引数组加关联数组
    
    /*
    var_dump返回结果如下:
        array(2) {
      [0]=>
      array(6) {
        ["name"]=>
        string(5) "admin"
        [0]=>
        string(5) "admin"
        ["passwd"]=>
        string(6) "123456"
        [1]=>
        string(6) "123456"
        ["age"]=>
        string(2) "21"
        [2]=>
        string(2) "21"
      }
      [1]=>
      array(6) {
        ["name"]=>
        string(6) "admin2"
        [0]=>
        string(6) "admin2"
        ["passwd"]=>
        string(3) "aaa"
        [1]=>
        string(3) "aaa"
        ["age"]=>
        string(2) "25"
        [2]=>
        string(2) "25"
      }
    }
    */

1.34 fetchcolumn方法,获取一个字段的值,参数为1代表获取第一行第2列的数据。

$res = $pdo_statement -> fetchcolumn(1);  //获取一个字段的值,参数为1代表获取第一行第2列的数据。
    /*
    var_dump返回结果如下:
        string(6) "123456"
    */
    

1.35 通过常量约束函数返回数组类型。

/*     通过常量约束返回的数据格式:
PDO::FETCH_ASSOC,表示关联类型的数据
PDO::FETCH_NUM,表示索引数据
PDO::FETCH_BOTH,表示关联、索引数据
 */
 $res = $pdo_statement -> fetchall(PDO::FETCH_ASSOC);  //获取所有数据,返回关联数组
    var_dump($res);
    /*
    var_dump返回结果如下:
        array(2) {
      [0]=>
      array(3) {
        ["name"]=>
        string(5) "admin"
        ["passwd"]=>
        string(6) "123456"
        ["age"]=>
        string(2) "21"
      }
      [1]=>
      array(3) {
        ["name"]=>
        string(6) "admin2"
        ["passwd"]=>
        string(3) "aaa"
        ["age"]=>
        string(2) "25"
      }
    }
    */
    
    
    
?>

 1.4 quote方法将字符串中的引号进行转义。

$data = "a  'or' 1";
    $res = $pdo -> quote($data);
    var_dump($res);
    /*
    vardump输出结果:
    string(13) "'a  \'or\' 1'"
    
    */
    

1.5 PDO处理错误信息,errorInfo方法返回错误信息包含错误码、errorCode函数返回错误码。

  $sql = "sellct from user";
   
   $res = $pdo -> exec($sql);
   var_dump($pdo->errorcode());
   /*
    var_dump返回结果如下:
    string(5) "42000"
   */
    var_dump($pdo->errorinfo());
    /*
        var_dump返回结果如下:
            array(3) {
      [0]=>
      string(5) "42000"
      [1]=>
      int(1064)
      [2]=>
      string(162) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sellct from user' at line 1"
}
    */

1.6 PDO事务处理

$pdo -> beginTransaction();   //开启事务
    $sql1 = "update user set age=age+1 where name = 'admin'";
    
    $res1 = $pdo->exec($sql1);
    
    $sql2 = "update user set age=age-1 where name = 'admin2'";
    
    $res2 = $pdo->exec($sql2);
    
    if($res1 && $res2){
        
        $pdo ->commit();          //如果两条语句都执行成功提交事务。
        echo "提交成功.";
        
    }else{
        
        $pdo ->rollback();        //如果有一条语句执行失败回滚事务。
        echo "执行失败,rollback。"    ;
        }

 1.7 lastInsertId函数,获得上次执行插入操作时产生的主键的值。

$sql2 = "insert into user values('admin2','aaaaa',25)";
    $pdo -> exec($sql2);     //exec方法执行sql语句,增删改。
    var_dump($pdo->lastInsertId())
    /* var_dump返回结果如下:
    string(1) "0" */

 

posted @ 2018-12-06 09:54  看天空  阅读(235)  评论(0编辑  收藏  举报