您好,登錄后才能下訂單哦!
本篇文章為大家展示了PHP中 PDOStatement::fetchAll的作用是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
PDOStatement::fetchAll
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() ]]] )
參數
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 參數的值,此參數有不同的意義:
PDO::FETCH_COLUMN :返回指定以0開始索引的列。
PDO::FETCH_CLASS :返回指定類的實例,映射每行的列到類中對應的屬性名。
PDO::FETCH_FUNC :將每行的列作為參數傳遞給指定的函數,并返回調用函數后的結果。
ctor_args
當 fetch_style 參數為 PDO::FETCH_CLASS 時,自定義類的構造函數的參數。
返回值
PDOStatement::fetchAll()
返回一個包含結果集中所有剩余行的數組。此數組的每一行要么是一個列值的數組,要么是屬性對應每個列名的一個對象。
使用此方法獲取大結果集將導致系統負擔加重且可能占用大量網絡資源。與其取回所有數據后用PHP來操作,倒不如考慮使用數據庫服務來處理結果集。例如,在取回數據并通過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 )
根據單獨的一列把所有值分組
下面例子演示了如何返回一個根據結果集中指定列的值分組的關聯數組。該數組包含三個鍵:返回的 apple 和 pear 數組包含了兩種不同的顏色,而返回的 watermelon 數組僅包含一種顏色。
<?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)); ?>
以上實例的輸出為:
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" } }
每行調用一次函數
下面列子演示了 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中 PDOStatement::fetchAll的作用是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。