zoukankan      html  css  js  c++  java
  • PDOStatement::fetchAll

    PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)高佣联盟 www.cgewang.com


    说明

    语法

    array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )

    参数

    fetch_style

    控制下一行如何返回给调用者。此值必须是 PDO::FETCH_* 系列常量中的一个,默认为 PDO::ATTR_DEFAULT_FETCH_MODE 的值 (默认为 PDO::FETCH_BOTH )。

    想要返回一个包含结果集中单独一列所有值的数组,需要指定 PDO::FETCH_COLUMN 。通过指定 column-index 参数获取想要的列。

    想要获取结果集中单独一列的唯一值,需要将 PDO::FETCH_COLUMN 和 PDO::FETCH_UNIQUE 按位或。

    想要返回一个根据指定列把值分组后的关联数组,需要将 PDO::FETCH_COLUMN 和 PDO::FETCH_GROUP 按位或。

    fetch_argument
    根据 fetch_style 参数的值,此参数有不同的意义:

    • PDO::FETCH_COLUMN:返回指定以0开始索引的列。

    • PDO::FETCH_CLASS:返回指定类的实例,映射每行的列到类中对应的属性名。

    • PDO::FETCH_FUNC:将每行的列作为参数传递给指定的函数,并返回调用函数后的结果。

    ctor_args
    当 fetch_style 参数为 PDO::FETCH_CLASS 时,自定义类的构造函数的参数。


    返回值

    PDOStatement::fetchAll() 返回一个包含结果集中所有剩余行的数组。此数组的每一行要么是一个列值的数组,要么是属性对应每个列名的一个对象。

    使用此方法获取大结果集将导致系统负担加重且可能占用大量网络资源。与其取回所有数据后用PHP来操作,倒不如考虑使用数据库服务来处理结果集。例如,在取回数据并通过PHP处理前,在 SQL 中使用 WHERE 和 ORDER BY 子句来限定结果。


    实例

    获取结果集中所有剩余的行

    <?php
    $sth = $dbh->prepare("SELECT name, colour FROM fruit");
    $sth->execute();
    
    /* 获取结果集中所有剩余的行 */
    print("Fetch all of the remaining rows in the result set:
    ");
    $result = $sth->fetchAll();
    print_r($result);
    ?>

    以上实例的输出为:

    Fetch all of the remaining rows in the result set:
    Array
    (
        [0] => Array
            (
                [NAME] => pear
                [0] => pear
                [COLOUR] => green
                [1] => green
            )
    
        [1] => Array
            (
                [NAME] => watermelon
                [0] => watermelon
                [COLOUR] => pink
                [1] => pink
            )
    
    )

    获取结果集中单独一列的所有值

    下面例子演示了如何从一个结果集中返回单独一列所有的值,尽管 SQL 语句自身可能返回每行多列。

    <?php
    $sth = $dbh->prepare("SELECT name, colour FROM fruit");
    $sth->execute();
    
    /* 获取第一列所有值 */
    $result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
    var_dump($result);
    ?>

    以上实例的输出为:

    Array(3)
    (
        [0] =>
        string(5) => apple
        [1] =>
        string(4) => pear
        [2] =>
        string(10) => watermelon
    )

    根据单独的一列把所有值分组

    下面例子演示了如何返回一个根据结果集中指定列的值分组的关联数组。该数组包含三个键:返回的 apple 和 pear 数组包含了两种不同的颜色,而返回的 watermelon 数组仅包含一种颜色。

    <?php
    $insert = $dbh->prepare("INSERT INTO fruit(name, colour) VALUES (?, ?)");
    $insert->execute(array('apple', 'green'));
    $insert->execute(array('pear', 'yellow'));
    
    $sth = $dbh->prepare("SELECT name, colour FROM fruit");
    $sth->execute();
    
    /* 根据第一列分组  */
    var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));
    ?>

    以上实例的输出为:

    array(3) {
      ["apple"]=>
      array(2) {
        [0]=>
        string(5) "green"
        [1]=>
        string(3) "red"
      }
      ["pear"]=>
      array(2) {
        [0]=>
        string(5) "green"
        [1]=>
        string(6) "yellow"
      }
      ["watermelon"]=>
      array(1) {
        [0]=>
        string(5) "green"
      }
    }

    每行结果实例化一个类

    下面列子演示了 PDO::FETCH_CLASS 获取风格的行为。

    <?php
    class fruit {
        public $name;
        public $colour;
    }
    
    $sth = $dbh->prepare("SELECT name, colour FROM fruit");
    $sth->execute();
    
    $result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit");
    var_dump($result);
    ?>

    以上实例的输出为:

    array(3) {
      [0]=>
      object(fruit)#1 (2) {
        ["name"]=>
        string(5) "apple"
        ["colour"]=>
        string(5) "green"
      }
      [1]=>
      object(fruit)#2 (2) {
        ["name"]=>
        string(4) "pear"
        ["colour"]=>
        string(6) "yellow"
      }
      [2]=>
      object(fruit)#3 (2) {
        ["name"]=>
        string(10) "watermelon"
        ["colour"]=>
        string(4) "pink"
      }
    }

    每行调用一次函数

    下面列子演示了 PDO::FETCH_FUNC 获取风格的行为。

    <?php
    function fruit($name, $colour) {
        return "{$name}: {$colour}";
    }
    
    $sth = $dbh->prepare("SELECT name, colour FROM fruit");
    $sth->execute();
    
    $result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");
    var_dump($result);
    ?>

    以上实例的输出为:

    array(3) {
      [0]=>
      string(12) "apple: green"
      [1]=>
      string(12) "pear: yellow"
      [2]=>
      string(16) "watermelon: pink"
    }
  • 相关阅读:
    jslint报错太多的解决方式
    gulp之文件合并以及整合html中的script和link
    H5移动端下html上传图片被旋转问题
    [转]如何处理iOS中照片的方向
    [转]移动端上传图片翻转的解决方案
    [转]【鹅厂网事】全局精确流量调度新思路-HttpDNS服务详解
    phoneGap入门教程
    [转]移动端HTML5<video>视频播放优化实践
    [转]【技术心得】Last-Modified,Etag,Expire区别
    [转]浏览器缓存机制
  • 原文地址:https://www.cnblogs.com/yc10086/p/13111510.html
Copyright © 2011-2022 走看看