PDOStatement::fetchAll
PDOStatement::fetchAll — 返回一個(gè)包含結(jié)果集中所有行的數(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
fetch_argument
根據(jù) fetch_style 參數(shù)的值,此參數(shù)有不同的意義:
ctor_args
當(dāng) fetch_style 參數(shù)為 PDO::FETCH_CLASS 時(shí),自定義類的構(gòu)造函數(shù)的參數(shù)。
返回值
PDOStatement::fetchAll()
返回一個(gè)包含結(jié)果集中所有剩余行的數(shù)組。此數(shù)組的每一行要么是一個(gè)列值的數(shù)組,要么是屬性對應(yīng)每個(gè)列名的一個(gè)對象。
使用此方法獲取大結(jié)果集將導(dǎo)致系統(tǒng)負(fù)擔(dān)加重且可能占用大量網(wǎng)絡(luò)資源。與其取回所有數(shù)據(jù)后用PHP來操作,倒不如考慮使用數(shù)據(jù)庫服務(wù)來處理結(jié)果集。例如,在取回?cái)?shù)據(jù)并通過PHP處理前,在SQL 中使用 WHERE 和 ORDER BY 子句來限定結(jié)果。
實(shí)例
獲取結(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); ?>
以上實(shí)例的輸出為:
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 ) )
獲取結(jié)果集中單獨(dú)一列的所有值
下面例子演示了如何從一個(gè)結(jié)果集中返回單獨(dú)一列所有的值,盡管 SQL 語句自身可能返回每行多列。
?php $sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); /* 獲取第一列所有值 */ $result = $sth->fetchAll(PDO::FETCH_COLUMN, 0); var_dump($result); ?>
以上實(shí)例的輸出為:
Array(3) ( [0] => string(5) => apple [1] => string(4) => pear [2] => string(10) => watermelon )
根據(jù)單獨(dú)的一列把所有值分組
下面例子演示了如何返回一個(gè)根據(jù)結(jié)果集中指定列的值分組的關(guān)聯(lián)數(shù)組。該數(shù)組包含三個(gè)鍵:返回的 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)); ?>
以上實(shí)例的輸出為:
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" } }
每行結(jié)果實(shí)例化一個(gè)類
下面列子演示了 PDO::FETCH_CLASS 獲取風(fēng)格的行為。
?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); ?>
以上實(shí)例的輸出為:
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" } }
每行調(diào)用一次函數(shù)
下面列子演示了 PDO::FETCH_FUNC 獲取風(fēng)格的行為。
?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); ?>
以上實(shí)例的輸出為:
array(3) { [0]=> string(12) "apple: green" [1]=> string(12) "pear: yellow" [2]=> string(16) "watermelon: pink" }
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
標(biāo)簽:紹興 呼倫貝爾 綏化 清遠(yuǎn) 安康 萊蕪 溫州 金華
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP PDOStatement::fetchAll講解》,本文關(guān)鍵詞 PHP,PDOStatement,fetchAll,講解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。