PDOStatement::fetchAll() - PDOStatement类
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_COLUMN
和PDO::FETCH_UNIQUE
按位或。
想要返回一个根据指定列把值分组后的关联数组,需要将PDO::FETCH_COLUMN
和PDO::FETCH_GROUP
按位或。
根据$fetch_style参数的值,此参数有不同的意义:
PDO::FETCH_COLUMN
:返回指定以0开始索引的列。PDO::FETCH_CLASS
:返回指定类的实例,映射每行的列到类中对应的属性名。PDO::FETCH_FUNC
:将每行的列作为参数传递给指定的函数,并返回调用函数后的结果。
当$fetch_style参数为PDO::FETCH_CLASS
时,自定义类的构造函数的参数。
返回值
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 )
根据单独的一列把所有值分组
下面例子演示了如何返回一个根据结果集中指定列的值分组的关联数组。该数组包含三个键:返回的apple和pear数组包含了两种不同的颜色,而返回的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
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!