PHP PDOStatement::fetchAll讲解
PDOStatement::fetchAll
PDOStatement::fetchAll—返回一个包含结果集中所有行的数组(PHP5>=5.1.0,PECLpdo>=0.1.0)
说明
语法
arrayPDOStatement::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和ORDERBY子句来限定结果。
实例
获取结果集中所有剩余的行
prepare("SELECTname,colourFROMfruit"); $sth->execute(); /*获取结果集中所有剩余的行*/ print("Fetchalloftheremainingrowsintheresultset:\n"); $result=$sth->fetchAll(); print_r($result); ?>
以上实例的输出为:
Fetchalloftheremainingrowsintheresultset: Array ( [0]=>Array ( [NAME]=>pear [0]=>pear [COLOUR]=>green [1]=>green ) [1]=>Array ( [NAME]=>watermelon [0]=>watermelon [COLOUR]=>pink [1]=>pink ) )
获取结果集中单独一列的所有值
下面例子演示了如何从一个结果集中返回单独一列所有的值,尽管SQL语句自身可能返回每行多列。
prepare("SELECTname,colourFROMfruit"); $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数组仅包含一种颜色。
prepare("INSERTINTOfruit(name,colour)VALUES(?,?)"); $insert->execute(array('apple','green')); $insert->execute(array('pear','yellow')); $sth=$dbh->prepare("SELECTname,colourFROMfruit"); $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获取风格的行为。
prepare("SELECTname,colourFROMfruit"); $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获取风格的行为。
prepare("SELECTname,colourFROMfruit"); $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" }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。