PHP PDOStatement::fetchAll讲解
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
- 控制下一行如何返回给调用者。此值必须是 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
$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 获取风格的行为。
<?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);
?
以上实例的输出为:
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 获取风格的行为。
<?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);
?
以上实例的输出为:
array(3) {
[0]=
string(12) "apple: green"
[1]=
string(12) "pear: yellow"
[2]=
string(16) "watermelon: pink"
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对ZaLou.Cn的支持。
- SQL优化一(SQL使用技巧)
- Spring思维导图,让Spring不再难懂(aop篇)
- MongoDB初探第二篇 (r4笔记第82天)
- Spring思维导图,让Spring不再难懂(cache篇)
- 曲折的10g,11g中EM的安装配置过程(r4笔记第98天)
- Linux 学习记录 一(安装、基本文件操作).
- 实用的位运算应用(r4笔记第97天)
- 关于date格式的两个案例(r4笔记第96天)
- 【新技术分享】C++17 最新进展
- Ant + Jenkies +Tomcat 自动构建部署Web项目
- 博客项目Tale思维导图,让项目不再难懂
- 关于权限管理的实用脚本(r4笔记第94天)
- Ant学习笔记
- 清理session的小插曲(r4笔记第95天)
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Linux 为特定的用户或用户组启用或禁用 SSH的方法
- Android 中IntentFilter的匹配规则实例详解
- Android VideoCache视频缓存的方法详解
- Android标题栏最右边添加按钮的实例
- Ubuntu18.04系统安装、配置Redis及phpredis扩展操作详解
- Android电话拨号器实例详解
- Android获取App内存使用情况的方法
- linux后台运行的几种方式(小结)
- Android 实现ListView的点击变色的实例
- Android播放音乐案例分享
- linux crm部署代码详解
- Android自定义WaveProgressView实现水波纹加载需求
- CentOS8下的root密码快速修改方法
- Android开发之自定义刮刮卡实现代码
- Android ScrollView无法填充满屏幕的解决办法