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. HBase笔记--filter的使用

    HBASE过滤器介绍: 所有的过滤器都在服务端生效,叫做谓语下推(predicate push down),这样可以保证被过滤掉的数据不会被传送到客户端. 注意:        基于字符串的比较器,如 ...

  2. d3可视化实战01:理解SVG元素特性

    一. SVG简介 ————————————————————————————————————————————————————————————————— SVG是一种和图像分辨率无关的矢量图形格式,它使用 ...

  3. C++中对sprintf()函数的说明(转)

    在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望.由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出 ...

  4. JQ无法修改input的type属性的替代解决方法

    需要实现的效果:一个输入框,当输入框未获得焦点的时候,显示为 “请输入密码”:当输入内容并失去焦点的时候,输入内容显示为”*****”,如果没有输入仍然显示“请输入密码”: 方法一:使用text,隐藏 ...

  5. HDU_1010——小狗走迷宫DFS

    Problem Description The doggie found a bone in an ancient maze, which fascinated him a lot. However, ...

  6. tomcat+redis实现session共享缓存

    一:linux下redis安装 1.wget http://download.redis.io/releases/redis-3.2.4.tar.gz 2.tar xzf redis-3.2.4.ta ...

  7. iOS--tableview分组

    -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ ; } -(NSInteger)tableView:(UITable ...

  8. 【微信公众号】验证用户OpenID是否关注某个公众号

    1.获取OpenID #region 获取微信支付的OpenId /// <summary> /// 获取微信支付的OpenId /// </summary> /// < ...

  9. java 存储oracle的clob字段

    项目中有很长的字符创需要存储,用到了oracle的clob字段,直接很长的字符串插入到clob字段中会报字符过长的异常,于是便寻求解决方案.看到这个博客写的还不错 首先,创建一个含CLOB字段的表: ...

  10. Face recognition using Histograms of Oriented Gradients

    Face recognition using Histograms of Oriented Gradients 这篇论文的主要内容是将Hog算子应用到人脸识别上. 转载请注明:http://blog. ...