百科狗-知识改变命运!
--

PDOStatement::fetchAll() - PDOStatement类

梵高12个月前 (11-21)阅读数 16#技术干货
文章标签结果

PDOStatement::fetchAll()

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

返回一个包含结果集中所有行的数组

说明

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

参数

$fetch_style

控制返回数组的内容如同PDOStatement::fetch()文档中记载的一样。默认为PDO::ATTR_DEFAULT_FETCH_MODE的值(其缺省值为PDO::FETCH_BOTH

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

想要获取结果集中单独一列的唯一值,需要将PDO::FETCH_COLUMNPDO::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() - PDOStatement类

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

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

范例

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

以上例程的输出类似于:

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 语句自身可能返回每行多列。

以上例程的输出类似于:

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

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

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

以上例程的输出类似于:

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获取风格的行为。

以上例程的输出类似于:

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获取风格的行为。

以上例程的输出类似于:

array(3) {
  [0]=>
  string(12) "apple: green"
  [1]=>
  string(12) "pear: yellow"
  [2]=>
  string(16) "watermelon: pink"
}

参见

  • PDO::query() 执行 SQL 语句,以 PDOStatement 对象形式返回结果集
  • PDOStatement::fetch() 从结果集中获取下一行
  • PDOStatement::fetchColumn() 从结果集中的下一行返回单独的一列。
  • PDO::prepare() 准备要执行的语句,并返回语句对象
  • PDOStatement::setFetchMode() 为语句设置默认的获取模式。
I still don't understand why FETCH_KEY_PAIR is not documented here (http://php.net/manual/fr/pdo.constants.php), because it could be very useful!

This will display:
array(2) {
 [2]=>
 string(10) "name2"
 [5]=>
 string(10) "name5"
}
Getting foreach to play nicely with some data from PDO FetchAll()
I was not understanding to use the $value part of the foreach properly, I hope this helps someone else.
Example:

which gives:
array (size=2)
 0 => 
  array (size=2)
   'title' => string 'About Cats Really Long title for the article' (length=44)
   'FMarticle_id' => string '7CAEBB15-6784-3A41-909A-1B6D12667499' (length=36)
 1 => 
  array (size=2)
   'title' => string 'another cat story' (length=17)
   'FMarticle_id' => string '0BB86A06-2A79-3145-8A02-ECF6EA5C405C' (length=36)
Then use:

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)