php 之 PDO数据访问抽象层(0513)

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 "添加失败";
  }

 

posted @ 2016-05-16 10:44  陌上初薰  阅读(344)  评论(0编辑  收藏  举报