首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP PDO fetch 模式完整參數對照表與實戰範例

     編輯:PHP 綜合知識

PDO 的 fetch 模式功能強大,但參數組合眾多,每次查閱文件都很費時。本文整理常見模式的輸出結構對照,並附上可直接執行的測試程式碼,方便開發者快速選擇最適合的資料結構。

測試資料準備

假設資料表 category 有三筆資料:

id | name      | method
---|-----------|--------
1  | HBO       | service
2  | 本周新片  | movie
3  | 熱映中    | movie

各模式輸出結果對照

1. FETCH_ASSOC(關聯陣列)

$data = $db->query("SELECT id, name, method FROM category")
          ->fetchAll(PDO::FETCH_ASSOC);
/*
array(
  array('id'=>'1', 'name'=>'HBO', 'method'=>'service'),
  array('id'=>'2', 'name'=>'本周新片', 'method'=>'movie'),
  array('id'=>'3', 'name'=>'熱映中', 'method'=>'movie')
)
*/

2. FETCH_COLUMN(單一欄位陣列,預設第 0 欄)

$data = $db->query("SELECT name, method FROM category")
          ->fetchAll(PDO::FETCH_COLUMN);
/*
array('HBO', '本周新片', '熱映中')
*/

3. FETCH_UNIQUE | FETCH_ASSOC(首欄為鍵,其餘為關聯陣列)

$data = $db->query("SELECT id, name, method FROM category")
          ->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC);
/*
array(
  '1' => array('name'=>'HBO', 'method'=>'service'),
  '2' => array('name'=>'本周新片', 'method'=>'movie'),
  '3' => array('name'=>'熱映中', 'method'=>'movie')
)
*/

4. FETCH_UNIQUE | FETCH_COLUMN(首欄為鍵,次欄為值)

$data = $db->query("SELECT id, name, method FROM category")
          ->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_COLUMN);
/*
array('1'=>'HBO', '2'=>'本周新片', '3'=>'熱映中')
*/

5. FETCH_GROUP | FETCH_ASSOC(首欄分組,值為關聯陣列集合)

$data = $db->query("SELECT method, id, name FROM category")
          ->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_ASSOC);
/*
array(
  'service' => array(array('id'=>'1', 'name'=>'HBO')),
  'movie'   => array(
                array('id'=>'2', 'name'=>'本周新片'),
                array('id'=>'3', 'name'=>'熱映中')
              )
)
*/

6. FETCH_OBJ(物件陣列)

$data = $db->query("SELECT id, name, method FROM category")
          ->fetchAll(PDO::FETCH_OBJ);
/*
array(
  stdClass Object (id=>1, name=>HBO, method=>service),
  stdClass Object (id=>2, name=>本周新片, method=>movie),
  stdClass Object (id=>3, name=>熱映中, method=>movie)
)
*/

7. FETCH_CLASS | FETCH_PROPS_LATE(映射至自訂類別)

class Category {
  public $id, $name, $method;
}
$data = $db->query("SELECT id, name, method FROM category")
          ->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, "Category");
/* 產生 Category 物件陣列,屬性自動對應欄位 */

選擇建議

  • 需快速建立 id => 資料 字典:FETCH_UNIQUE | FETCH_ASSOC
  • 僅需單一欄位清單:FETCH_COLUMN
  • 依某欄位分群統計:FETCH_GROUP 系列
  • 習慣物件導向操作:FETCH_OBJ 或 FETCH_CLASS

將本文加入書籤,下次查詢 PDO 模式不再東翻西找!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved