首页 > 代码库 > 【php】PDO

【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();

【php】PDO