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. html文字有光晕

    <style> .tb{ font-size:40px; filter:glow(color=pink,direction=); font-family:华文行楷; } </styl ...

  2. Linux查看一个文件夹大小

    1.Linux查看一个文件夹大小: du -sh /home/yangkun [yangkun@sg1 bin]$ du -sh /home/yangkun/ 164M /home/yangkun/ ...

  3. POSTGRESQL小玩

    因为CDH上需要用它来建HIVE的元库... 参考: http://www.cnblogs.com/mchina/archive/2012/06/06/2539003.html 一.简介 Postgr ...

  4. LED驅動芯片對LED壽命的影響

    5050年,領導作為一種新型節能光源在世界和中國有非常高的熱情和偉大的問題,不得不贏得市場占有率從室外到室內照明應用,中國也如雨后春筍般涌現在大型和小型LED照明企業.鑒于LED照明的主要原因是其促進 ...

  5. PullToRefreshListView 内嵌checkbox 数据丢失问题

    在PullToRefreshListView 内部内嵌了Checkbox如下图所示: 原本设计思路是:对CheckBox 进行 setOnCheckedChangeListener 监听 当Check ...

  6. 文件上传[Uploadify]

    Uploadify文件上传插件 Uploadify简单说来,是基于Jquery的一款文件上传插件.它的功能特色总结如下: 支持单文件或多文件上传,可控制并发上传的文件数 在服务器端支持各种语言与之配合 ...

  7. http调试工具,linux调试工具

    charles Linux下Web性能压力测试工具http_load linux 下的socket 调试工具 netcat Linux下四款Web服务器压力测试工具(http_load.webbenc ...

  8. head命令

    head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾. 1.命令格式: hea ...

  9. v4l2采集视频和图片源码

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h&g ...

  10. CentOS启动MySQL服务失败

    :: mysqld_safe Starting mysqld daemon with databases from /data/mysql :: [Warning] Can't create test ...