博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【php】PDO
阅读量:5064 次
发布时间:2019-06-12

本文共 2648 字,大约阅读时间需要 8 分钟。

一、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();

转载于:https://www.cnblogs.com/peilanluo/p/6828539.html

你可能感兴趣的文章
Codeforces 620E(线段树+dfs序+状态压缩)
查看>>
Windows7中双击py文件运行程序
查看>>
Market entry case
查看>>
bzoj1230 开关灯 线段树
查看>>
LinearLayout
查看>>
css3动画属性
查看>>
Mongodb 基本命令
查看>>
控制文件的备份与恢复
查看>>
PHP的SQL注入技术实现以及预防措施
查看>>
软件目录结构规范
查看>>
mysqladmin
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>
Eclipse 调试的时候Tomcat报错启动不了
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android入门之文件系统操作(二)文件操作相关指令
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
java学习笔记之String类
查看>>
UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
查看>>