加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_郴州站长网 (http://www.0735zz.com/)- 云通信、区块链、物联设备、云计算、站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP数据库学习之怎样借助PDO获取查询结果?

发布时间:2022-08-02 15:59:24 所属栏目:PHP教程 来源:互联网
导读:在之前的文章中给大家带来了《PHP数据库学习之怎样使用PDO执行SQL语句?》,其中详细的介绍了应该怎样使用PDO执行SQL语句的相关知识,本篇我们继续来看一下PHP怎样使用PDO获取查询结果。希望能够帮助到大家! 在之前的文章中我们已经学会了怎样使用PDO执行SQ
  在之前的文章中给大家带来了《PHP数据库学习之怎样使用PDO执行SQL语句?》,其中详细的介绍了应该怎样使用PDO执行SQL语句的相关知识,本篇我们继续来看一下PHP怎样使用PDO获取查询结果。希望能够帮助到大家!
 
 
  在之前的文章中我们已经学会了怎样使用PDO执行SQL语句,那接下来我们来看一看PDO的数据获取方法,PDO的数据获取方法与其他数据库扩展都是非常类似的。
 
  只要成功执行SELECT 查询,就都会有结果集对象生成,不管是使用PDO对象中的qurey()方法还是使用 prepare() 和 execute() 等方法结合的预处理语句,执行 SELECT 查询都会得到结果集对象 PDOStatement。
 
  通过 PDOStatement 类中的方法就可以获取 SELECT 语句的查询结果,接下来我们就来看一下PDOStatement 类中常见的几个获取结果集数据的方法。
 
  fetch() 方法
 
  fetch() 方法可以从一个 PDOStatement 对象的结果集中获取当前行的内容,并将结果集指针移至下一行,当到达结果集末尾时返回 FALSE,该方法的语法格式如下:
 
 
  PDOStatement::fetch([int $fetch_style[, int $cursor_orientation = PDO::FETCH_ORI_NEXT[, int $cursor_offset = 0]]])
 
  其中需要注意的是:
 
  $fetch_style 表示可选参数,用来控制下一行如何返回给调用者。其中这个参数的值必须是 PDO::FETCH_* 系列常量中的一个,如下所示:
 
  PDO::FETCH_ASSOC 表示返回一个关联数组;
 
  PDO::FETCH_BOTH(默认) 表示返回一个索引数组加关联数组混合的数组
 
  PDO::FETCH_BOUND 表示返回 TRUE,并分配结果集中的值给 PDOStatement::bindColumn() 方法绑定的 PHP 变量
 
  PDO::FETCH_OBJ 表示返回一个属性名对应结果集列名的匿名对象。
 
  PDO::FETCH_CLASS:返回一个请求类的新实例,映射结果集中的列名到类中对应的属性名。
 
  如果 fetch_style 包含 PDO::FETCH_CLASSTYPE 例如:PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE,则类名由第一列的值决定;
 
  $cursor orientation 表示可选参数,用来确定当对象是一个可滚动的游标时应当获取哪一行。此值必须是 PDO::FETCH_ORI_* 系列常量中的一个,默认为 PDO::FETCH_ORI_NEXT。
 
  $offset 表示可选参数,当参数 $cursor_orientation 设置为 PDO::FETCH_ORI_ABS 时,此值指定结果集中想要获取行的绝对行号;当参数 $cursor_orientation 设置为 PDO::FETCH_ORI_REL 时,此值指定想要获取行相对于调用 PDOStatement::fetch() 前游标的位置。
 
  接下来我们通过示例来看一下使用 fetch() 方法,获取 SELECT 语句的查询结果。示例如下:
 
 
 
 
  <?php
 
      $dsn  = 'mysql:host=127.0.0.1;dbname=test';
 
      $user = 'root';
 
      $pwd  = 'root';
 
      try{
 
          $pdo = new PDO($dsn,$user,$pwd);
 
          $sql = 'SELECT name,age,sex FROM user WHERE age = '12'';
 
          $res = $pdo -> query($sql);
 
          echo '<pre>';
 
          while ($row = $res -> fetch(PDO::FETCH_ASSOC)){
 
              print_r($row);
 
          }
 
      }catch(PDOException $e){
 
          echo '数据库连接失败:'.$e -> getMessage();
 
      }
 
  ?>
 
  输出结果:
 
  1028.12.png
 
  由此我们便通过fetch() 方法完成了从一个 PDOStatement 对象的结果集中获取当前行的内容。$offset 表示可选参数,当参数 $cursor_orientation 设置为 PDO::FETCH_ORI_ABS 时,此值指定结果集中想要获取行的绝对行号;当参数 $cursor_orientation 设置为 PDO::FETCH_ORI_REL 时,此值指定想要获取行相对于调用 PDOStatement::fetch() 前游标的位置。
 
  接下来我们看一下fetchAll() 方法的应用。
 
  fetchAll() 方法
 
  fetchAll() 方法与上面介绍的 fetch() 方法类似,但是该方法只需要调用一次就可以获取结果集中的所有行,并赋给返回的数组。该方法的语法格式如下:
 
 
  PDOStatement::fetchAll([int $fetch_style[, mixed $fetch_argument[, array $ctor_args = array()]]])
 
  其中需要注意的是:
 
  $fetch_style 表示可选参数,用来控制返回数组的内容,默认值为 PDO::FETCH_BOTH。该参数的取值与 fetch() 方法相同
 
  $fetch_argument 根据 $fetch_style 参数的值,此参数有不同的意义:
 
  PDO::FETCH_COLUMN:返回指定以 0 开始索引的列;
 
  PDO::FETCH_CLASS:返回指定类的实例,映射每行的列到类中对应的属性名;
 
  PDO::FETCH_FUNC:将每行的列作为参数传递给指定的函数,并返回调用函数后的结果。
 
  $ctor_args 表示当 $fetch_style 参数为 PDO::FETCH_CLASS 时,自定义类的构造函数的参数。
 
  接下来我们通过示例来看一下fetchAll() 方法的实际应用,示例如下:
 
  
  <?php
 
      $dsn  = 'mysql:host=127.0.0.1;dbname=test';
 
      $user = 'root';
 
      $pwd  = 'root';
 
      try{
 
          $pdo  = new PDO($dsn,$user,$pwd);
 
          $sql  = 'SELECT name,age,sex FROM user WHERE sex = '男'';
 
          $res  = $pdo -> query($sql);
 
          $data = $res -> fetchAll(PDO::FETCH_ASSOC);
 
          echo '<pre>';
 
          print_r($data);
 
      }catch(PDOException $e){
 
          echo '数据库连接失败:'.$e -> getMessage();
 
      }
 
  ?>

(编辑:开发网_郴州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读