首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PDOStatement::fetchAll

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

PDOStatement :: fetchAll - 返回一个包含所有结果集行的数组

描述

代码语言:javascript
复制
public array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )

参数

fetch_style

控制PDOStatement :: fetch()中记录的返回数组的内容。默认值为PDO::ATTR_DEFAULT_FETCH_MODE(默认为PDO::FETCH_BOTH

要返回由结果集中的单个列的所有值组成的数组,请指定PDO::FETCH_COLUMN。您可以指定您想要的fetch_argument参数列。

若目的是只获取结果集里单个列的唯一值,则按位或PDO::FETCH_COLUMN(附带PDO::FETCH_UNIQUE

若要返回按指定列的值分组的关联数组,则按位与或PDO::FETCH_COLUMNPDO::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()返回一个包含结果集中所有剩余行的数组。 该数组将每行表示为列值的数组或具有与每个列名称相对应的属性的对象。 如果获取的结果为零,则返回空数组,如果失败则返回FALSE。 使用这种方法获取较大的结果集将导致产生对系统和可能的网络资源的强烈需求。 不要检索所有数据并使用PHP进行操作,而应考虑使用数据库服务器来处理结果集。 例如,在使用PHP检索和处理结果之前,使用SQL中的WHERE和ORDER BY子句来限制结果。
  • 示例:
  • 示例#1 获取结果集中的所有剩余行
  • <?php $sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); /* Fetch all of the remaining rows in the result set */ print("Fetch all of the remaining rows in the result set:\n"); $result = $sth->fetchAll(); print_r($result); ?>​The above example will output something similar to:​​Fetch all of the remaining rows in the result set: Array ( [0] => Array ( [name] => apple [0] => apple [colour] => red [1] => red ) [1] => Array ( [name] => pear [0] => pear [colour] => green [1] => green ) [2] => Array ( [name] => watermelon [0] => watermelon [colour] => pink [1] => pink ) )
  • ​示例#2 从结果集中获取单个列的所有值
  • 以下示例演示如何从结果集中返回单个列的所有值,即使SQL语句本身可能每行返回多个列。
  • ​<?php $sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); /* Fetch all of the values of the first column */ $result = $sth->fetchAll(PDO::FETCH_COLUMN, 0); var_dump($result); ?>​The above example will output something similar to:​​Array(3) ( [0] => string(5) => apple [1] => string(4) => pear [2] => string(10) => watermelon )
  • 示例#3按单列对所有值进行分组
  • 以下示例演示如何返回按结果集中指定列的值分组的关联数组。 该数组包含三个键:值 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(); /* Group values by the first column */ var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP)); ?>​The above example will output something similar to:​​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) "pink" } }
  • 示例#4 为每个结果实例化一个类
  • 以下示例演示了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); ?>​The above example will output something similar to:​​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" } [3]=> object(fruit)#4 (2) { ["name"]=> string(5) "apple" ["colour"]=> string(3) "red" } [4]=> object(fruit)#5 (2) { ["name"]=> string(4) "pear" ["colour"]=> string(5) "green" } }​
  • 示例#5 为每个结果调用一个函数
  • 以下示例演示了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); ?>​The above example will output something similar to:​​array(3) { [0]=> string(12) "apple: green" [1]=> string(12) "pear: yellow" [2]=> string(16) "watermelon: pink" [3]=> string(10) "apple: red" [4]=> string(11) "pear: green" }​

扩展内容:

  • PDO :: query() - 执行一条SQL语句,返回一个结果集作为PDOStatement对象
  • PDOStatement :: fetch() - 从结果集中获取下一行
  • PDOStatement :: fetchColumn() - 返回结果集的下一行中的单个列
  • PDO :: prepare() - 准备执行语句并返回一个语句对象
  • PDOStatement :: setFetchMode() - 为此语句设置默认的获取模式

← PDOStatement::fetch

PDOStatement::fetchColumn →

扫码关注腾讯云开发者

领取腾讯云代金券