說明
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() ]]] )
- 控制下一行如何返回給調用者。此值必須是 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_style 參數的值,此參數有不同的意義:
- PDO::FETCH_COLUMN:返回指定以0開始索引的列。
- PDO::FETCH_CLASS:返回指定類的實例,映射每行的列到類中對應的屬性名。
- PDO::FETCH_FUNC:將每行的列作為參數傳遞給指定的函數,并返回調用函數后的結果。
- 當 fetch_style 參數為 PDO::FETCH_CLASS 時,自定義類的構造函數的參數。
- PDOStatement::fetchAll() 返回一個包含結果集中所有剩余行的數組。此數組的每一行要么是一個列值的數組,要么是屬性對應每個列名的一個對象。
- 使用此方法獲取大結果集將導致系統負擔加重且可能占用大量網絡資源。
- 與其取回所有數據后用PHP來操作,倒不如考慮使用數據庫服務來處理結果集。
- 例如,在取回數據并通過PHP處理前,在 SQL 中使用 WHERE 和 ORDER BY 子句來限定結果。
實例
獲取結果集中所有剩余的行
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);
?>
獲取結果集中單獨一列的所有值
prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* 獲取第一列所有值 */
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
var_dump($result);
?>
根據單獨的一列把所有值分組
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));
?>
每行結果實例化一個類
prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit");
var_dump($result);
?>
每行調用一次函數
prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");
var_dump($result);
?>
|