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. <Pro .NET MVC4> 三大工具之依赖注入神器——Ninject

    这篇内容是对<Pro .NET MVC4>一书中关于Ninject介绍的总结. Ninject是.NET MVC的一款开源的依赖注入工具. 使用场景:当MVC项目中使用了依赖注入技术来给程 ...

  2. yield 生成器例子

    #!/usr/bin/env python #encoding: utf-8 import time def consumer(name): print ('%s 来吃包子了...' % (name) ...

  3. Orchard之创建模板

    orchard创建模板的两种基本方式: 第一种:通过候补创建(需要用到候补神器): 第二种:通过Shape Tracing创建:

  4. 转:MFC 的程序中GetAt()的理解

    BYTE 是 1字节长度 的 整型, int 是 4 字节长度 的 整型. CString::GetAt(0); 就是把 一个 CString 对象里 的字符串 中的第一个字符,把它的ASCII 值 ...

  5. CA

    http://www.cmca.net/index.php?option=com_content&view=article&id=55&Itemid=16

  6. 用彩虹表破解MD5、LM Hash等复杂加密密码

    http://zhaoxiaobu.blog.51cto.com/878176/461016/

  7. c++ primer( 文本查询程序)

    读取用户指定的任意文本文件,然后允许用户从该文件查找单词,查询的结果是该单词出现的次数,并列出每次出现所在的行,如果某单词在同一行中多次出现,程序将只显示改行的一次.行号按升序显示(int main( ...

  8. BZOJ1697: [Usaco2007 Feb]Cow Sorting牛排序

    1697: [Usaco2007 Feb]Cow Sorting牛排序 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 387  Solved: 215[S ...

  9. HDU_2037——最多电视节目问题

    Problem Description “今年暑假不AC?” “是的.” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%...”确实如此,世界杯来了,球迷的节日也来了,估计很多 ...

  10. 对Ul下的li标签执行点击事件——如何获取你所点击的标签

    问题所来:做项目时,一般的数据都是用循环动态加载出来的,结构都是一样的,只是绑定的值不同,如何对相同的标签做处理的问题就来了. 例如:点谁就显示谁的数值 <ul > <li id=& ...