小白教程
所有教程
关于
Search
172.71.254.145
172.71.254.145
参数设置
贡献
退出
操作
编辑
移动
保护
信息
历史
删除
查看“Pdostatement fetchall”的源代码
本页内容
上一节:
Pdostatement_fetch
下一节:
Pdostatement_fetchcolumn
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:PDOStatement::fetchAll}}[[Category:PHP PDO 参考手册|32]] = PDOStatement::fetchAll = [[:Category:PHP PDO 参考手册]] PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) == 说明 == === 语法 === <pre> array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] ) </pre> == 参数 == '''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 参数的值,此参数有不同的意义: * '''<code>PDO::FETCH_COLUMN</code>''':返回指定以0开始索引的列。 * '''<code>PDO::FETCH_CLASS</code>''':返回指定类的实例,映射每行的列到类中对应的属性名。 * '''<code>PDO::FETCH_FUNC</code>''':将每行的列作为参数传递给指定的函数,并返回调用函数后的结果。 '''ctor_args''' 当 fetch_style 参数为 PDO::FETCH_CLASS 时,自定义类的构造函数的参数。 == 返回值 == PDOStatement::fetchAll() 返回一个包含结果集中所有剩余行的数组。此数组的每一行要么是一个列值的数组,要么是属性对应每个列名的一个对象。 使用此方法获取大结果集将导致系统负担加重且可能占用大量网络资源。与其取回所有数据后用PHP来操作,倒不如考虑使用数据库服务来处理结果集。例如,在取回数据并通过PHP处理前,在 SQL 中使用 WHERE 和 ORDER BY 子句来限定结果。 === 获取结果集中所有剩余的行 === <pre> <?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); ?> </pre> 以上实例的输出为: <pre> 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 ) ) </pre> === 获取结果集中单独一列的所有值 === 下面例子演示了如何从一个结果集中返回单独一列所有的值,尽管 SQL 语句自身可能返回每行多列。 <pre> <?php $sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); /* 获取第一列所有值 */ $result = $sth->fetchAll(PDO::FETCH_COLUMN, 0); var_dump($result); ?> </pre> 以上实例的输出为: <pre> Array(3) ( [0] => string(5) => apple [1] => string(4) => pear [2] => string(10) => watermelon ) </pre> === 根据单独的一列把所有值分组 === 下面例子演示了如何返回一个根据结果集中指定列的值分组的关联数组。该数组包含三个键:返回的 apple 和 pear 数组包含了两种不同的颜色,而返回的 watermelon 数组仅包含一种颜色。 <pre> <?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)); ?> </pre> 以上实例的输出为: <pre> 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" } } </pre> === 每行结果实例化一个类 === 下面列子演示了 PDO::FETCH_CLASS 获取风格的行为。 <pre> <?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); ?> </pre> 以上实例的输出为: <pre> 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" } } </pre> === 每行调用一次函数 === 下面列子演示了 PDO::FETCH_FUNC 获取风格的行为。 <pre> <?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); ?> </pre> 以上实例的输出为: <pre> array(3) { [0]=> string(12) "apple: green" [1]=> string(12) "pear: yellow" [2]=> string(16) "watermelon: pink" } </pre> [[:Category:PHP PDO 参考手册]]
返回至“
Pdostatement fetchall
”。
上一节:
Pdostatement_fetch
下一节:
Pdostatement_fetchcolumn