W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDOStatement::fetchAll — 從結(jié)果集中獲取剩余的行
public PDOStatement::fetchAll(int $mode = PDO::FETCH_DEFAULT): array
public PDOStatement::fetchAll(int $mode = PDO::FETCH_COLUMN, int $column): array
public PDOStatement::fetchAll(int $mode = PDO::FETCH_CLASS, string $class, ?array $constructorArgs): array
public PDOStatement::fetchAll(int $mode = PDO::FETCH_FUNC, callable $callback): array
mode
控制返回數(shù)組的內(nèi)容如同 PDOStatement::fetch() 文檔中記載的一樣。默認為 PDO::ATTR_DEFAULT_FETCH_MODE
的值( 其缺省值為 PDO::FETCH_BOTH
)
想要返回一個包含結(jié)果集中單獨一列所有值的數(shù)組,需要指定 PDO::FETCH_COLUMN
。通過指定 column
參數(shù)獲取想要的列。
想要獲取結(jié)果集中單獨一列的唯一值,需要將 PDO::FETCH_COLUMN
和 PDO::FETCH_UNIQUE
按位或。
想要返回一個根據(jù)指定列把值分組后的關(guān)聯(lián)數(shù)組,需要將 PDO::FETCH_COLUMN
和 PDO::FETCH_GROUP
按位或。
以下是依賴獲取模式的動態(tài)參數(shù)。它們不能與命名參數(shù)一起使用。
column
與 PDO::FETCH_COLUMN
一起使用。返回指定以 0 開始索引的列。
class
與 PDO::FETCH_CLASS
一起使用。返回指定類的實例,映射每行的列到類中對應的屬性名。
constructorArgs
當 mode
參數(shù)為 PDO::FETCH_CLASS
時自定義類構(gòu)造方法的參數(shù)。
callback
與 PDO::FETCH_FUNC
一起使用。將每行的列作為參數(shù)傳遞給指定的函數(shù),并返回調(diào)用函數(shù)后的結(jié)果。
PDOStatement::fetchAll() 返回一個包含結(jié)果集中所有剩余行的數(shù)組。此數(shù)組的每一行要么是一個列值的數(shù)組,要么是屬性對應每個列名的一個對象。如果獲取到的結(jié)果為 0,則返回空數(shù)組。
使用此方法獲取大結(jié)果集將導致系統(tǒng)負擔加重且可能占用大量網(wǎng)絡資源。與其取回所有數(shù)據(jù)后用PHP來操作,倒不如考慮使用數(shù)據(jù)庫服務來處理結(jié)果集。例如,在取回數(shù)據(jù)并通過PHP處理前,在 SQL 中使用 WHERE 和 ORDER BY 子句來限定結(jié)果。
如果屬性 PDO::ATTR_ERRMODE 設置為 PDO::ERRMODE_WARNING,則發(fā)出級別為 E_WARNING 的錯誤。
如果屬性 PDO::ATTR_ERRMODE 設置為 PDO::ERRMODE_EXCEPTION,則拋出 PDOException。
版本 | 說明 |
---|---|
8.0.0 | 現(xiàn)在此方法始終返回 array,之前可能在失敗時返回 false 。 |
示例 #1 獲取結(jié)果集中所有剩余的行
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* 獲取結(jié)果集中所有剩余的行 */
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] => apple [0] => apple [colour] => red [1] => red ) [1] => Array ( [name] => pear [0] => pear [colour] => green [1] => green ) [2] => Array ( [name] => watermelon [0] => watermelon [colour] => pink [1] => pink ) )
示例 #2 獲取結(jié)果集中單獨一列的所有值
下面例子演示了如何從一個結(jié)果集中返回單獨一列所有的值,盡管 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 )
示例 #3 根據(jù)單獨的一列把所有值分組
下面例子演示了如何返回一個根據(jù)結(jié)果集中指定列的值分組的關(guān)聯(lián)數(shù)組。該數(shù)組包含三個鍵:返回的 apple 和 pear 數(shù)組包含了兩種不同的顏色,而返回的 watermelon 數(shù)組僅包含一種顏色。
<?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();
/* 根據(jù)第一列分組 */
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) "pink" } }
示例 #4 每行結(jié)果實例化一個類
下面列子演示了 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" } [3]=> object(fruit)#4 (2) { ["name"]=> string(5) "apple" ["colour"]=> string(3) "red" } [4]=> object(fruit)#5 (2) { ["name"]=> string(4) "pear" ["colour"]=> string(5) "green" } }
示例 #5 每行調(diào)用一次函數(shù)
下面列子演示了 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" [3]=> string(10) "apple: red" [4]=> string(11) "pear: green" }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: