PHP PDOStatement::fetchAll() 方法

返回上一级

PHP PDOStatement::fetchAll() 返回一个包含结果集中所有行的数组

(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)

函数原型

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
$stmt   = $dbh->prepare("SELECT name, colour FROM fruit");
$stmt->execute();

/* 获取结果集中所有剩余的行 */
echo "Fetch all of the remaining rows in the result set:\n";
$rs = $stmt->fetchAll();
print_r($rs);

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

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

<?php
$stmt = $dbh->prepare("SELECT name, colour FROM fruit");
$stmt->execute();

/* 获取第一列所有值 */
$rs = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);
var_dump($result);

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

下面的代码演示了如何返回一个根据结果集中指定列的值分组的关联数组

该数组包含三个键:返回的 apple 和 pear 数组包含了两种不同的颜色,而返回的 watermelon 数组仅包含一种颜色

<?php
$stmt = $dbh->prepare("INSERT INTO fruit(name, colour) VALUES (?, ?)");
$stmt->execute(array('apple', 'green'));
$stmt->execute(array('pear', 'yellow'));

$stmt = $dbh->prepare("SELECT name, colour FROM fruit");
$stmt->execute();

/* 根据第一列分组  */
var_dump($stmt->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));

范例 : 每行结果实例化一个类

下面的代码演示了 PDO::FETCH_CLASS 获取风格的行为

<?php

class fruit
{
    public $name;
    public $colour;
}

$stmt = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

$rs = $stmt->fetchAll(PDO::FETCH_CLASS, "fruit");
var_dump($result);

范例 : 每行调用一次函数

下面的代码演示了 PDO::FETCH_FUNC 获取风格的行为

<?php
function fruit($name, $colour)
{
    return "{$name}: {$colour}";
}

$stmt = $dbh->prepare("SELECT name, colour FROM fruit");
$stmt->execute();

$rs = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");
var_dump($result);

返回上一级

PHP 5 函数参考手册

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2018 简单教程 twle.cn All Rights Reserved.