zoukankan      html  css  js  c++  java
  • 【php】PDO

    一、PDO的定义

      1.pdo(php data object)是一个数据库的抽象层

    二、PDO的特点

      1.跨数据库

      2.支持预处理

      3.支持事务处理

    三、PDO的使用

      1.基本使用

        (1)实例化pdo

          ①数据库类型必须小写

          ②格式:$pdo=new PDO('mysql(可替换):host=localhost;dbname=数据库名;charset=utf8','root','密码');

        (2)发送sql指令

          $pdo->query(sql查询语句)  返回的是对象

          $pdo->exec(sql增、删、改语句)  返回的是手影响行数

        (3)$pdo->errorInfo()  错误信息

          $pdo->lastInsertId()  

      2.处理返回对象的方法

        (1)fetch()返回结果集的下一行,结果指针下移到头返回false

        (2)fetchAll(PDO::FETCH_NUM)返回全部(索引式)    PDO::FETCH_ASSOC关联式      PDO::FETCH_BOTH索引式和关联式

        (3)foreach遍历

      3.预处理

        (1)实例化对象

        (2)发送预处理指令

          $stmt=$pdo->prepare(sql语句,变量部分使用占位符);

          ?  :name  占位符

        (3)绑定参数

          ① ?作为占位符  bindValue(序号,值);

          ② :name作为占位符  bindValue(占位符,变量);

          ③ :name作为占位符  $arr=array('占位符'=>'值');

        (4)执行

          $stmt->execute($arr);

        (5)处理结果

          ① 结果集foreach fetch fetchAll

          ② 受影响行数 rowCount();

     1 //使用数据库抽象层进行预处理操作
     2 
     3 //1. 实例化
     4 $pdo = new PDO('mysql:host=localhost;dbname=lamp183;charset=utf8','root','');
     5 
     6 //2. 发送预处理指令
     7 
     8 //增加
     9 $stmt = $pdo->prepare('insert into user (username,password) values (:name,:pass)');
    10 
    11 //3. 给预处理指令绑定相应的值
    12 //第一种绑定方式
    13 // $stmt->bindValue(1,'qiaojing');
    14 // $stmt->bindValue(2,'qiaojing');
    15 
    16 //第二种绑定方式
    17 // $uname = '鸿泽';
    18 // $upass = '鸿泽';
    19 // $stmt->bindParam(':name',$uname);
    20 // $stmt->bindParam(':pass',$upass);
    21 
    22 //第三种绑定方式
    23 $arr = array(
    24             ':name'=>'召勇',
    25             ':pass'=>'召勇'
    26             );
    27 
    28 //4. 执行
    29 $stmt->execute($arr);
    30 
    31 //5. 处理结果
    32 if($stmt->rowCount()>0){
    33     $id = $pdo->lastInsertId();
    34     echo '添加成功!ID号为:'.$id;
    35 }else{
    36     echo '添加失败!';
    37 }
    38 // echo $stmt->rowCount();

      4.事务处理

        (1)表的类型必须是innodb

          show create table user;

          alter table user engine=innodb;

        (2)$pdo->beginTransAction();  开启

          $pdo->rollBack();  回滚

            $pdo->commit();  事务结束

     1 //使用PDO抽象类,实现事务处理
     2 //1.实例化
     3 $pdo = new PDO('mysql:host=localhost;dbname=lamp183;charset=utf8;','root','');
     4 
     5 //2.发送语句
     6     //(1)开启事务处理
     7     $pdo->beginTransaction();
     8 
     9     //(2)修改我自己的数据
    10     $num1 = $pdo->exec('update user set acount = acount - 100000 where id = 1');
    11     
    12     //判断我的修改语句是否有问题
    13     if(!$num1){
    14         $pdo->rollBack();    //如果事务出现问题,则滚回去
    15         die('交易失败,请查询后再转钱!');
    16     }
    17 
    18     //(3)修改别人的数据
    19     $num2 = $pdo->exec('update user set acount = acount + 100000 where id = 2');
    20     
    21     //判断别人的修改语句是否有问题
    22     if(!$num2){
    23         $pdo->rollBack();
    24         die('交易失败!转钱的过程当中遇到了问题!');
    25     }
    26 
    27     //3.处理结果
    28     if($num1 && $num2){
    29         echo '恭喜,交易成功!';
    30     }
    31 
    32     //(4)结束
    33     $pdo->commit();
  • 相关阅读:
    23.课程应用接口
    22.课程页面设计
    21.手机接口
    20.云通讯
    19.JWT
    18.权限认证
    解决github下载慢的终极方法
    vs code 配置c/c++环境
    Python 字符编码处理总结
    Python编码
  • 原文地址:https://www.cnblogs.com/peilanluo/p/6828539.html
Copyright © 2011-2022 走看看