PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口。

PDO与mysqli曾经被建议用来取代原本PHP在用的mysql相关函数,

基于数据库使用的安全性,因为后者欠缺对于SQL资料隐码的防护。

一、PDO连接数据库:

1.造DSN,定义数据源:  驱动名:dbname=数据库名;host=服务器地址

$dsn="mysql:dbname=mydb;host=localhost";

2.造PDO对象:

$pdo=new PDO($dsn."root","");

3.写SQL语句:
$sql="select * from Info";

4.执行SQL语句:
  4.1 用query(),这种不常用,仅作了解。

    $v=$pdo->query($sql);

        //返回的对象比较特殊,可以直接用循环遍历:
          foreach ($v as $a)

    {

      echo $a[0];

    }

  4.2  预处理,先把SQL语句放到服务器上等待我们给它指令去执行

  //准备一条SQL语句:

  $stm=$po->prepare($sql);

  //执行准备好的SQL语句,成功返回true,失败返回false

  if($stm->execute())

  {

    //输出方式:

    //1.逐行取数据:

    $stm->fetch();

     里面可以写参数

       //var_dump($stm->fetch(PDO::FETCH_ASSOC));//关联数组
       //var_dump($stm->fetch(PDO::FETCH_BOTH));//都有
       //var_dump($stm->fetch(PDO::FETCH_NUM));//索引数组

    //2.取所有的数据,里面也可以写参数,同上:

    $stm->fetchAll();

    //3.取某一列,括号里面是索引:

    $stm->fetchcolumn(1);

    //4.返回对象:

    $stm->fetchObject();

    }

  else

  {

    echo "执行失败!";

    }

二、修改SQL语句,添加数据:

  $dsn="mysql:dbname=mydb;host=localhost";
  $pdo=new PDO($dsn,"root","");

1.方法一:直接使用添加的SQL语句
  $sql="insert into nation values ('p0001','张三')";
  $stm=$pdo->prepare($sql);
  if($stm->execute())
  {
    echo "执行成功";
  }
  else
  {
    echo "执行失败";
  }

2.方法二:用?来代替参数,然后给参数绑定值(方法有些麻烦,一般不用)

  //用?来代替:

  $sql="insert into nation values (?,?)";

  $stm=$pdo->prepare($sql);

  //给参数绑定值:

  绑定值方法一:索引数组

  $stm->bindParam(1,$code);
  $stm->bindParam(2,$name);
  $code = "p100";
  $name = "回家";

  绑定值方法二:关联数组

  $stm->bindParam("code",$code,PDO::PARAM_STR);
  $stm->bindParam("name",$name,PDO::PARAM_STR);
  $code = "p102";
  $name = "回家";

  if($stm->execute())
  {
    echo "执行成功";
  }
  else
  {
    echo "执行失败";
  }

3.方法三:数组方式

  $sql = "insert into Nation values(:code,:name)";

  $stm=$pdo->prepare($sql);

  //用数组方式来添加数值:

  方式一:索引数组

  $attr  = array("p101","很快");

  方式二:关联数组

  $attr  = array("code"=>"p103","name"=>"shj");

  if($stm->execute($attr))
  {
    echo "添加成功";
  }
  else
  {
    echo "添加失败";
  }

4.方式四:$_POST,用表单的方式。

  //可另建一个页面建个表单

  <form action="test1.php" method="post">
  <input type="text" name="code" />
  <input type="text" name="name" />
  <input type="submit" value="添加" />

  </form>

  $dsn="mysql:dbname=mydb;host=localhost";

  $pdo=new PDO($dsn,"root","");

  $sql = "insert into Nation values(:code,:name)";

  $stm=$pdo->prepare($sql);

  if($stm->execute($_POST))
  {
    echo "添加成功";
  }
  else
  {
    echo "添加失败";
  }

php 之 PDO数据访问抽象层(0513)的更多相关文章

  1. PDO数据访问抽象层

    PDO数据访问抽象层: 我们使用的mysqli是针对mysql这个数据库扩展的一个类,如果要用到别的数据库的话就可以用PDO来做 1.操作数据库 先来代码 <!--PDO--> <! ...

  2. PDO(数据访问抽象层)、pdo事务功能和预处理功能---2017-05-05

    之前所学的数据访问都是用mysqli做成类来访问的,但是mysqli这个类只是针对mysql这个数据库的:那么如果访问其他类型的数据库呢? 那么这就用到了PDO(数据访问抽象层). 一.关于PDO基本 ...

  3. PHP中关于PDO数据访问抽象层的功能操作

    PDO:数据访问抽象层 具有三大特点: 1.可以访问其它数据库  所有数据库都可以 2.具有事务功能 3.带有预处理语句功能(防止SQL注入攻击) 实例操作代码如下: <?php //1.造PD ...

  4. PDO数据访问抽象层(上)

    PDO比MySQLi功能强大 PDO可以访问MySQL及其它数据库 一.造对象 <?php $dsn = "mysql:dbname = crud;host = localhost&q ...

  5. PDO 数据访问抽象层

    1.操作其它数据库 (1)造对象 $dsn = "mysql:dbname=test3;host=localhost"; //数据源:两个参数:数据库驱动,链接数据库 $pdo = ...

  6. 5月13 PDO数据访问抽象层

    方法1:较简单的 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  7. PDO数据访问抽象层(下)

    PDO两大功能 一.事务功能 PDO的事务功能主要控制好几条sql语句同时成功或者同时失败(当其中一条SQL语句有错误时,同时好几条一起失败),失败时可以回滚操作 1.造对象 <?php $ds ...

  8. php PDO:数据访问抽象层

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. PDO:数据访问抽象层

    <?php //PDO:数据访问抽象层 //带有事务功能: //dsn:数据源 $dsn="mysql:host=localhost;dbname=aaas"; //造pdo ...

随机推荐

  1. 光盘卡在MacBook里退不出来咋办?

    如果光盘推不出来了怎么办?很多同学想到的是:上针!不过这招对MacBook Pro毫无用处,因为没有给你插针的地方,没有机械按键,只有键盘右上角一个推出的快捷键,不过在光盘卡在光驱里时,按此健基本无效 ...

  2. Codeforces 704D Captain America

    题意:平面上有n个点,每个点必须涂成红色和蓝色中的一种,花费各为r和b(对所有的点花费都一样).m条限制,每条限制形如"y=b这条直线上两种颜色的点的数目之差的绝对值不能超过c"或 ...

  3. ural 1572 Yekaterinozavodsk Great Well

    #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> # ...

  4. VS2013中使用GDI+绘图

    VC范例,400多个例子源代码下载 http://download.csdn.net/detail/bigtree_mfc/7727977 VS2013中使用GDI+绘图和VC6.0不同,在VC6.0 ...

  5. Contest - 第10届“新秀杯”ACM程序设计大赛网络资格赛 赛后信息(晋级名单·正式版)

    2014_acm_fresh_0057 刘畅 20131620 2014_acm_fresh_0099 汪哲 20132185 2014_acm_fresh_0086 陈顺 2014111776 20 ...

  6. linux mount命令学习

    我们在下面这篇博文中已经有笼统的学习了文件系统的一些相关知识, http://blog.csdn.net/boyxulin1986/article/details/12107113 本篇我们主要是用来 ...

  7. ubuntu下安装pdo扩展

    ubuntu下安装好LAMP后默认情况没有安装mysql_pdo扩展,以下是安装 步聚,在终端输入以下命令 1.pecl search pdo 2.sudo pecl install pdo 当出现E ...

  8. grouth:全栈工程师指南

    语言学习 curl -v baidu.com 域名请求DNS服务器得到网站服务器的IP,http是80端口,https是443端口.查到ip拿到HTML,JS,CSS后就开始渲染这个页面了. 1.Pa ...

  9. 听说每天都要写随笔,word哥~

    今天主要学习了html的基本知识,进制的转换,无序列表,有序列表和表格,都是很基本的东西,然后自己自习了表单. <!DOCTYPE html PUBLIC "-//W3C//DTD X ...

  10. Ubuntu 12.04 搭建Android开发环境

    Ubuntu 12.04 搭建Android开发环境 2013/7/29 Linux环境下搭建Android开发环境 大部分开发人员可能都在Windows下做开发,可能是感觉在Windows下比较方便 ...