PHP PDOStatement::fetchAll講解
PDOStatement::fetchAll
PDOStatement::fetchAll — 返回一個包含結果集中所有行的數(shù)組(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
說明
語法
array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )
參數(shù)
fetch_style
- 控制下一行如何返回給調用者。此值必須是 PDO::FETCH_* 系列常量中的一個,缺省為 PDO::ATTR_DEFAULT_FETCH_MODE 的值 (默認為 PDO::FETCH_BOTH )。
- 想要返回一個包含結果集中單獨一列所有值的數(shù)組,需要指定 PDO::FETCH_COLUMN 。通過指定 column-index 參數(shù)獲取想要的列。
- 想要獲取結果集中單獨一列的唯一值,需要將 PDO::FETCH_COLUMN 和 PDO::FETCH_UNIQUE 按位或。
- 想要返回一個根據(jù)指定列把值分組后的關聯(lián)數(shù)組,需要將 PDO::FETCH_COLUMN 和 PDO::FETCH_GROUP 按位或。
fetch_argument
根據(jù) fetch_style 參數(shù)的值,此參數(shù)有不同的意義:
- PDO::FETCH_COLUMN :返回指定以0開始索引的列。
- PDO::FETCH_CLASS :返回指定類的實例,映射每行的列到類中對應的屬性名。
- PDO::FETCH_FUNC :將每行的列作為參數(shù)傳遞給指定的函數(shù),并返回調用函數(shù)后的結果。
ctor_args
當 fetch_style 參數(shù)為 PDO::FETCH_CLASS 時,自定義類的構造函數(shù)的參數(shù)。
返回值
PDOStatement::fetchAll()返回一個包含結果集中所有剩余行的數(shù)組。此數(shù)組的每一行要么是一個列值的數(shù)組,要么是屬性對應每個列名的一個對象。
使用此方法獲取大結果集將導致系統(tǒng)負擔加重且可能占用大量網(wǎng)絡資源。與其取回所有數(shù)據(jù)后用PHP來操作,倒不如考慮使用數(shù)據(jù)庫服務來處理結果集。例如,在取回數(shù)據(jù)并通過PHP處理前,在SQL 中使用 WHERE 和 ORDER BY 子句來限定結果。
實例
獲取結果集中所有剩余的行
<?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);
?>
以上實例的輸出為:
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 語句自身可能返回每行多列。
<?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 )
根據(jù)單獨的一列把所有值分組
下面例子演示了如何返回一個根據(jù)結果集中指定列的值分組的關聯(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) "green"
}
}
每行結果實例化一個類
下面列子演示了 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"
}
}
每行調用一次函數(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"
}
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
- PHP _construct()函數(shù)講解
- PHP PDOStatement::setFetchMode講解
- PHP PDOStatement::setAttribute講解
- PHP PDOStatement::rowCount講解
- PHP PDOStatement::nextRowset講解
- PHP PDOStatement::getColumnMeta講解
- PHP PDOStatement::getAttribute講解
- PHP PDOStatement::fetchObject講解
- PHP PDOStatement::fetchColumn講解
- PHP addAttribute()函數(shù)講解
相關文章
Notice: Trying to get property of non-object problem(PHP)解決辦
今天又一次遇到PHP 的一個提醒:Notice: Trying to get property of non-object problem,這種錯誤很常見2012-03-03
windows8.1下Apache+Php+MySQL配置步驟
這篇文章主要介紹了windows8.1下Apache+Php+MySQL配置步驟,需要的朋友可以參考下2015-10-10
如何在PHP中使用Oracle數(shù)據(jù)庫(1)
如何在PHP中使用Oracle數(shù)據(jù)庫(1)...2006-10-10

