PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。

PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。

PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用,无法运行于之前的PHP版本。

pdo功能:

1.操作其它数据库
2.事务功能
3.防止SQL注入攻击

操作其他数据库:

  1. //造PDO对象
  2. $dsn = "mysql:dbname=mydb;host=localhost"; //数据源
  3. $pdo = new PDO($dsn,"root","123"); //root为连接用户名,123为密码
  4.  
  5. //写SQL语句
  6. $sql = "select * from nation";
  7. $sql1 = "insert into nation values('n077','数据')";
  8.  
  9. //执行,返回的是PDOStatement对象
  10. $a = $pdo->query($sql); //执行查询
  11. $a1 = $pdo->exec($sql1); //执行其他语句
  12.  
  13. var_dump($a);
  14. var_dump($a1);
  15.  
  16. $arr = $a->fetchAll(PDO::FETCH_BOTH); //遍历输出
  17. var_dump($arr);

  

事务功能:

事务:能够控制语句同时成功同时失败,失败时可以回滚:

  1. $dsn = "mysql:dbname=mydb;host=localhost";
  2. $pdo = new PDO($dsn,"root","123");
  3.  
  4. //设置异常模式
  5. $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
  6.  
  7. try
  8. {
  9. //开启事务
  10. $pdo ->beginTransaction();
  11.  
  12. //......中间部分为数据库代码及执行
  13.  
  14. //提交
  15. $pdo->commit();
  16. }
  17. catch(Exception $e)
  18. {
  19. //抓住try里面出现的错误,并且处理
  20. //echo $e->getMessage(); //获取异常信息
  21. echo "失败! ";
  22. //回滚
  23. $pdo->rollBack();
  24. }
  25. //final()
  26. //{
  27. //最终执行,无论以上try代码有没有出错,都会执行
  28. //}

  

如果cath()中有失败语句,则回到开启事务时的状态。

防止SQL注入攻击:

索引方法:

  1. //预处理语句防止SQL注入
  2. $dsn = "mysql:dbname=mydb;host=localhost";
  3. $pdo = new PDO($dsn,"root","123");
  4.  
  5. //$code = "n005";
  6.  
  7. //SQL语句里面需要加占位符 ?
  8. //$sql = "select * from nation where code=?";
  9. $sql = "insert into nation values(?,?)";
  10.  
  11. //准备执行,返回PDOStatement对象
  12. $st = $pdo->prepare($sql);
  13.  
  14. //调用绑定参数的方法来绑定参数
  15. //$st->bindParam(1,$code);
  16. //$st->bindParam(2,$name);
  17. //$name = "测试1";
  18.  
  19. //索引数组
  20. $attr = array("n006","测试2");
  21.  
  22. //执行方法
  23. $st->execute($attr);
  24.  
  25. //$attr = $st->fetchAll();
  26.  
  27. //var_dump($attr);

  

关联方法:

  1. $dsn = "mysql:dbname=mydb;host=localhost";
  2. $pdo = new PDO($dsn,"root","123");
  3.  
  4. //占位符是字符串
  5. $sql = "insert into nation values(:code,:name)";
  6.  
  7. $st = $pdo->prepare($sql);
  8. //$st->bindParam(":code",$code,PDO::PARAM_STR);
  9. //$st->bindParam(":name",$name,PDO::PARAM_STR);
  10. //$code = "n007";
  11. //$name = "测试3";
  12.  
  13. //关联数组
  14. $attr = array("code"=>"n008","name"=>"测试4");
  15.  
  16. $st->execute($attr);

  

利用关联方法向数据库添加数据:

新建添加php文件:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>无标题文档</title>
  6. </head>
  7.  
  8. <body>
  9. <form action="addchuli.php" method="post">
  10. <div>代号:<input type="text" name="code" /></div>
  11. <div>名称:<input type="text" name="name" /></div>
  12. <input type="submit" value="添加" />
  13. </form>
  14. </body>
  15. </html>

 

处理界面:

  1. <?php
  2. $dsn = "mysql:dbname=mydb;host=localhost";
  3. $pdo = new PDO($dsn,"root","123");
  4.  
  5. //占位符是字符串
  6. $sql = "insert into nation values(:code,:name)";
  7.  
  8. $st = $pdo->prepare($sql);
  9. //$st->bindParam(":code",$code,PDO::PARAM_STR);
  10. //$st->bindParam(":name",$name,PDO::PARAM_STR);
  11. //$code = "n007";
  12. //$name = "测试3";
  13.  
  14. $st->execute($_POST);
  15.  
  16. ?>

  

pdo的使用的更多相关文章

  1. 比Mysqli操作数据库更简便的方式 。PDO

    下面来说一下PDO 先画一张图来了解一下 mysqli是针对mysql这个数据库扩展的一个类 PDO是为了能访问更多数据库 如果出现程序需要访问其他数据库的话就可以用PDO来做 PDO数据访问抽象层1 ...

  2. PHP中PDO事务的使用方法

    事务 (Transaction) 是操作数据库中很重要的一个功能, 它可以让你预定一条, 或者一系列 SQL 语句, 然后一起执行. 在执行的过程中, 如果其中的某条执行失败, 可以回滚所有已更改的操 ...

  3. PDO连接mysql数据库

    1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...

  4. PDO概念 分析 练习

    PDO 翻译过来叫做数据访问抽象层 它是一个数据访问的层面,实际上是一个类,也就是说所有操作数据库的代码,都是通过这个层面完成的 该图好理解大概就是这样一种模式 现在考虑的是能不能使用同一个类,上层代 ...

  5. PDO

    'PDO'是数据访问抽象层'用mysqli类找到mysqli驱动根据驱动操作mysqli数据库'其他类找到sqlserver驱动根据驱动操作sqlserve数据库'PDO 访问其他数据库 PDO的用法 ...

  6. 前端学PHP之PDO预处理语句

    × 目录 [1]定义 [2]准备语句 [3]绑定参数[4]执行查询[5]获取数据[6]大数据对象 前面的话 本来要把预处理语句和前面的基础操作写成一篇的.但是,由于博客园的限制,可能是因为长度超出,保 ...

  7. 前端学PHP之PDO基础操作

    × 目录 [1]创建PDO [2]使用PDO [3]事务处理 前面的话 PDO(php data object)扩展类库为php访问数据库定义了轻量级的.一致性的接口,它提供了一个数据库访问抽象层,这 ...

  8. CANopen学习——PDO

    查找资料时,发现一个很好的博客,博主剖析的通俗易懂 http://www.cnblogs.com/winshton/p/4897556.html   PDO定义: 过程数据对象,用来传输实时数据.因为 ...

  9. PHP基础之PDO

    简介 PDO(PHP Data Object)是指PHP数据对象,它定义了一个轻量级的一致接口来统一操作各种数据库.PDO提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方 ...

随机推荐

  1. CRC、反码求和校验 原理分析

    3月份开始从客户端转后台,算是幸运的进入全栈工程师的修炼阶段.这段时间一边是老项目的客户端加服务器两边的维护和交接,一边是新项目加加加班赶工,期间最长经历了连续工作三天只睡了四五个小时的煎熬,人生也算 ...

  2. 轻量级“集合”迭代器-Generator

    Generator是PHP 5.5加入的新语言特性.但是,它似乎并没有被很多PHP开发者广泛采用.因此,在我们了解PHP 7对Generator的改进之前,我们先通过一个简单却显而易见的例子来了解下G ...

  3. 【Win 10 应用开发】应用预启动

    所谓预启动,其实你一看那名字就知道是啥意思了,这是直接译,也找不到比这个叫法更简练的词了.在系统资源允许的情况下(比如电池电量充足,有足够的内存空间),系统会把用户常用的应用程序在后台启动,但不会显示 ...

  4. 使用AWS亚马逊云搭建Gmail转发服务(三)

    title: 使用AWS亚马逊云搭建Gmail转发服务(三) author:青南 date: 2015-01-02 15:42:22 categories: [Python] tags: [log,G ...

  5. javascript中的操作符详解1

    好久没有写点什么了,根据博主的技术,仍然写一点javascript新手入门文章,接下来我们一起来探讨javascript的操作符. 一.前言 javascript中有许多操作符,但是许多初学者并不理解 ...

  6. Java 时间类-Calendar、Date、LocalDate/LocalTime

    1.Date 类 java.util.Date是一个"万能接口",它包含日期.时间,还有毫秒数,如果你只想用java.util.Date存储日期,或者只存储时间,那么,只有你知道哪 ...

  7. 接口--interface

    “interface”(接口)关键字使抽象的概念更深入了一层.我们可将其想象为一个“纯”抽象类.它允许创建者规定一个类的基本形式:方法名.自变量列表以及返回类型,但不规定方法主体.接口也包含了基本数据 ...

  8. js 基础篇(点击事件轮播图的实现)

    轮播图在以后的应用中还是比较常见的,不需要多少行代码就能实现.但是在只掌握了js基础知识的情况下,怎么来用较少的而且逻辑又简单的方法来实现呢?下面来分析下几种不同的做法: 1.利用位移的方法来实现 首 ...

  9. Android Studio —— 创建Menu菜单项

    大多数android程序的右上角都会设置一个菜单按钮比如微信的界面右上角的加号. 这个需要在layout同级目录下新建文件夹命名为menu,再右击新建的menu新建xml文件:

  10. Android之数据存储的五种方法

    1.Android数据存储的五种方法 (1)SharedPreferences数据存储 详情介绍:http://www.cnblogs.com/zhangmiao14/p/6201900.html 优 ...