最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
PHP PDOStatementfetchAll讲解
时间:2026-05-30 11:00:02 编辑:袖梨 来源:一聚教程网
PDOStatement::fetchAll
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
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:n");$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 获取风格的行为。
<?phpclass 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 获取风格的行为。
<?phpfunction 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"}总结
相关文章
- 异环魔女之家 进入方法与全流程通关攻略 05-30
- 漫蛙漫画网页入口在哪 05-30
- Ubuntu如何进行全盘加密设置 05-30
- Archive of Our Own官方网站入口汇总 AO3网页端访问地址 05-30
- 因特智能AI视觉攻克半导体光罩纳米级检测卡脖子难题 05-30
- 心跳陷落阵营势力选择指南:详细解析各阵营特色与角色搭配建议 05-30