PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口。PDO与mysqli曾经被建议用来取代原本PHP在用的mysql相关函数,基于数据库使用的安全性,因为后者欠缺对于SQL资料隐码的防护。

PDO是连接数据库的另一种方法,之前用到的是mysqli,PDO 不是单纯的连接musql数据库,还可以连接到sqlserve oracl等等数据库,用起来更方便一些。

PDO 一个最大的特点就是具有事务性, 主要运用在财务方面,在执行的时候是一起通过,或者一起出现异常的,比如财务在转账过程中,一处的财务增加了,那么另一处的财务肯定会有所减少,运用PDO 就可以避免出现一处财务

增加了,而另一处财务没有减少的情况。

并不能使用PDO扩展本身执行任何数据库操作,必须使用一个database-specific PDO driver(针对特定数据库的PDO驱动)访问数据库服务器。PDO并不提供数据库抽象,它并不会重写SQL或提供数据库本身缺失的功能,如果你需要这种功能,你需要使用一个更加成熟的抽象层。

 <?php
//创建对象
$dsn="mysql:dbname=test;host=localhost;"; $pdo=new PDO($dsn,"root","root"); //将PDO的错误类型设置为异常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); try{
//开启事务
$pdo->beginTransaction(); $sql1="insert into score VALUES ('110','3-215','90') ";
$sql2="insert into score VALUES ('111','3-215','92')"; //这两条语句是一起执行的,如果出错,这两条语句都是无法执行的 $pdo->exec($sql1); //如果是select语句 用query()调用就可以了
$pdo->exec($sql2); //提交事务
$pdo->commit();
}
catch(Exception $e)
{ //回滚操作
$pdo->rollBack();
}
?>

未操作前的数据库 操作后的数据库(提交事务后是一起出现在数据库的)

如果是添加大批量的数据的时候,用上面的方法写起来可能会比较麻烦一些, 下面是比较简单的方法,运用数组的模式来写

 //创建对象
$dsn="mysql:dbname=test;host=localhost";
$pdo=new PDO($dsn,"root","root");
//预处理SQL语句
$sql="insert into score VALUES (:sno,:cno,:degree)";
$stem=$pdo->prepare($sql); //造一个数组
$arr=array("sno"=>"120","cno"=>"95033","degree"=>88); //执行
$stem->execute($arr);

下面是举例说明这种方法的简单之处:写一个添加页面和其处理页面

 //这是添加页面
<body>
<h1>添加页面</h1>
<form action="pdoadd.php" method="post">
<div>学号:<input type="text" name="sno"/></div>
<div>班级:<input type="text" name="cno"/></div>
<div>成绩:<input type="text" name="degree"/></div>
<div><input type="submit" value="添加"/></div>
</form>
</body>

显示如图

 //这是添加处理页面
<?php
$dsn="mysql:dbname=test;host=localhost";
$pdo=new PDO($dsn,"root","root");
//预处理语句
$sql="insert into score VALUES (:sno,:cno,:degree)";
$tem=$pdo->prepare($sql);
//执行
$tem->execute($_POST);
?>

从添加的处理页面可以看出,用pdo来处理相对于mysqli来处理要简单一些的

最新文章

  1. 开发常用技巧之css字体编码
  2. 认识Visual Studio 条件编译
  3. 陷阱~EF中的Update与Insert共用一个数据上下文
  4. HDU1712周期
  5. Linux内核配置机制(make menuconfig 、Kconfig、Makefile)讲解【转】
  6. Clone Graph [LeetCode]
  7. A标签执行js 代码和跳转
  8. 【STL学习】map&amp;set
  9. 学习Swift -- 数组(Array) - 持续更新
  10. Objective-C中的分类与协议
  11. 表格table常见的边框设置和初步的立体效果
  12. 射频识别技术漫谈(27)——CPU卡概述
  13. ios 初体验&lt;UILabel控件&gt;
  14. 搜索模式| 系列2——KMP算法
  15. android – 无法解析AppCompatActivity
  16. 使用kbmmw 的REST 服务实现上传大文件
  17. error) DENIED Redis is running in protected mode because protected mode is enabled报错
  18. Python3+getopt解析命令行参数
  19. 终端复用软件 tmux
  20. angular5使用httpclient时解决跨域问题

热门文章

  1. 环信 之 iOS 客户端集成四:集成UI 之 会话列表
  2. php 禁用eval( )函数
  3. YII 数据库,模型,登录验证
  4. Spring mvc配置Json返回
  5. 如何给js动态创建的dom添加事件
  6. 在MyEclipse 2014中给Spket增加ExtJS提示
  7. log4j.appender.stdout.layout.ConversionPattern
  8. Java中的封装、继承、多态
  9. BZOJ2002(分块)
  10. page cache 与free