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,PHP PDOStatement::fetchAll讲解相关推荐

  1. fetchall php,PDOStatement::fetchAll

    PDOStatement::fetchAll PDOStatement::fetchAll - 返回一个包含结果集中所有行的数组(PHP 5 >= 5.1.0, PECL pdo >= 0 ...

  2. PDOStatement::fetchAll

    查看更多 https://www.yuque.com/docs/share/f74b0cd1-5834-4d6b-90aa-a9a9867edc30

  3. php fetchall用法,PHP利用fetchAll()与MySQL_fetch_array()用法示例

    感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧!同一个查询语句: fetchAll(): 代码如下: array(1) { [0]=>  array(6) { ["id" ...

  4. php fetchall与fetch,PDO :: fetchAll与PDO :: fetch在循环中

    小编典典 几乎没有200k随机记录的基准.与预期的一样,fetchAll方法更快,但需要更多的内存. Result : fetchAll : 0.35965991020203s, 100249408b ...

  5. php mysql execute语法_PHP PDOStatement::execute讲解

    PDOStatement::execute PDOStatement::execute - 执行一条预处理语句(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 ...

  6. php statements,PHP PDOStatement::setAttribute讲解

    PDOStatement::setAttribute PDOStatement::setAttribute - 设置一个语句属性(PHP 5 >= 5.1.0, PECL pdo >= 0 ...

  7. php resultset用法,PHP PDOStatement::nextRowset讲解

    PDOStatement::nextRowset PDOStatement::nextRowset - 在一个多行集语句句柄中推进到下一个行集(PHP 5 >= 5.1.0, PECL pdo ...

  8. php中rowcount 意思,PHP PDOStatement::rowCount讲解

    PDOStatement::rowCount PDOStatement::rowCount - 返回受上一个 SQL 语句影响的行数(PHP 5 >= 5.1.0, PECL pdo >= ...

  9. php pdo $_GET,PHP PDOStatement::getColumnMeta讲解

    PDOStatement::getColumnMeta PDOStatement::getColumnMeta - 返回结果集中一列的元数据(PHP 5 >= 5.1.0, PECL pdo & ...

最新文章

  1. 记一次线上商城系统 Tomcat、JVM 高并发的优化
  2. ClickHouse系列教程八:从一个服务器导入4T数据到另外一个服务器
  3. 嵌入层 tf.keras.layers.Embedding() 介绍【TensorFlow2入门手册】
  4. Python多版本共存配置
  5. 字符串是单一字符的无序组合吗_Python学习笔记(八)组合数据类型
  6. Java加密与解密的艺术~数字证书~证书使用keytool
  7. 近期关于感知器MLP的最新研究
  8. Invisible Perturbations: Physical Adversarial Examples Exploiting the Rolling Shutter Effect 论文解读
  9. BottomBar之Android底部菜单
  10. 【高数】收敛关系:级数与部分和、级数与数列、数列与子数列、级数与子级数
  11. python cad自动画图软件_科研画图都用什么软件?
  12. xbox手柄测试_【喂你播】苹果官网上架Xbox无线手柄,那么未来会有果牌手柄吗?...
  13. 最新无广告扒小马客服系统多种商户接入客服等!目前最好的客服系统 跟洽美站仿站网站源码
  14. java bitset javadoc,BitSet的源码研究
  15. JSP 创建 CRUD 示例 MyBatis DAO 用于数据库JSTL 用于遍历记录
  16. 基于SSM小区物业管理系统
  17. php有个schost.exe_window_XP主要15个系统进程,  1.svchost.exe    进程文 - phpStudy...
  18. mac上使用Mounty软件报错The volume NETAC is not re-mountable in read/write mode
  19. 安装两个虚拟机只为验证一个猜测,结果不出所料(Unity | deviceUniqueIdentifier | 设备ID相同)
  20. 反诈中心拦截网站域名措施与申诉方法

热门文章

  1. 106个计算机毕设程序项目,你想做好的程序都在这里面,YYSD
  2. DHCP Snooping简述
  3. 首页DIY数据 crmeb开发api接口文档
  4. codevs 1036
  5. 汉语是世界上最优秀的语言
  6. 在阿里云镜像站下载blender
  7. 当心从10亿估值沦落到一无所获!创业者签订融资协议时该注意什么?
  8. MZJ系列直流接触器
  9. 用计算机弹奏演员视频教程,计算机教程 声音演员.pdf
  10. 【学习笔记】数理统计习题十一