fetchall 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 子句来限定结果。
实例
获取结果集中所有剩余的行
$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 语句自身可能返回每行多列。
$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 数组仅包含一种颜色。
$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 获取风格的行为。
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 获取风格的行为。
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"
}
fetchall php,PDOStatement::fetchAll相关推荐
- fetchall php,PHP PDOStatement::fetchAll讲解
PDOStatement::fetchAll PDOStatement::fetchAll - 返回一个包含结果集中所有行的数组(PHP 5 >= 5.1.0, PECL pdo >= 0 ...
- PDOStatement::fetchAll
查看更多 https://www.yuque.com/docs/share/f74b0cd1-5834-4d6b-90aa-a9a9867edc30
- php fetchall 游标,MySQLdb fetchall返回字典的方法
MySQLdb 默认查询返回的是元祖 def book_list(request): db = MySQLdb.connect(user='root',db='cms',passwd='123456′ ...
- fetchall oracle,连接fetchall数据库
PDO连接mysql和pgsql数据库 PDO连接mysql数据库 <?php $dsn="mysql:host=localhsot;dbname=lamp87"; $use ...
- PDOStatement 类 FETCH_* 系列
PDOStatement::fetch 说明 PDOStatement::fetch - 从一个 PDOStatement 对象相关的结果集中获取下一行.fetch_style 参数决定 POD 如何 ...
- fetchAll()函数
fetchAll()方法获取结果集中的所有行.其语法如下: Array PDOStatement::fetchAll([int fetch_style[,int column_index]]) 参数f ...
- pdo fetchAll
作用 fetchAll()方法是获取结果集中的所有行.其返回值是一个包含结果集中所有数据的二维数组. PDOStatement::fetchAll ([ int $fetch_style [, mix ...
- Python数据库SQLite中的fetchone()、fetchMany()、fetchall()函数
今天在练习python数据库的查询操作时,使用fetchone().fetchMany().fetchall()函数,出现了一些奇怪的现象,现在做如下记录. 我想在同一个代码块中,使用fetchone ...
- php使用pdo操作mysql数据库实例_php5使用pdo连接数据库实例
本文为大家介绍下php pdo的用法. 一,pdo简介 pdo(php data object) 是php 5 中加入的东西,是php 5新加入的一个重大功能,因为在php 5以前的php4/php3 ...
最新文章
- boost::endian::order的用法测试程序
- EMR集群安全认证和授权管理
- SqlAlchemy初探
- 海量数据持久层解决方案_爱数AnyBackup重磅发布海量非结构化数据超可用解决方案...
- 剑桥offer(41~50)
- Extjs 实现Iframe的子窗口遮罩整个页面
- python 自动化测试
- 谈谈优惠券系统的设计
- Sundot实习项目——高考志愿填报系统
- 在python做对应分析_案例6:SPSS--对应分析
- 文件的下载与保存,以及mp3文件的播放
- 直接灰度变换法matlab,数字图像处理-灰度变换(附MATLAB代码)
- [Java进阶]学习笔记2:毫秒值的概念和作用
- 将微信公众号中的图文制成PPT的方法
- ICON结构解析(订正版)
- 带你了解现有UWB技术及原理
- 视觉-语言:推理还是预训练?【VALSE Webinar】Panel实录
- Rust 基础(七)
- 电脑c盘清理、电脑清理、电脑C盘成功瘦身15G左右
- 玲珑宝塔linux使用心得