2013-04-04 22:05

PDO fetch 模式的回傳結果

PDO 的 fetch 模式功能實在是太方便了,但每次要產生想要的結果都要試太麻煩了,這裡列出可能的組合。

  1. <?php 
  2. $dbAdapter = new PDO("mysql:host=localhost;dbname=test", "root", "1234"); 
  3. $dbAdapter->exec("SET NAMES 'utf8';"); 
  4.  
  5.  
  6.  
  7.  
  8. $data = $dbAdapter->query(" 
  9.    SELECT id, name, method FROM category 
  10. ")->fetchAll(PDO::FETCH_ASSOC); 
  11.  
  12. //var_dump($data); 
  13. /* 
  14. array( 
  15.    array( 
  16.        'id' => '1', 
  17.        'name' => 'HBO', 
  18.        'method' => 'service', 
  19.    ), 
  20.    array( 
  21.        'id' => '2', 
  22.        'name' => '本週新片', 
  23.        'method' => 'movie', 
  24.    ), 
  25.    array( 
  26.        'id' => '3', 
  27.        'name' => '熱映中', 
  28.        'method' => 'movie', 
  29.    ), 
  30. ) 
  31. */ 
  32.  
  33.  
  34.  
  35. $data = $dbAdapter->query(" 
  36.    SELECT name, method FROM category 
  37. ")->fetchAll(PDO::FETCH_COLUMN); 
  38.  
  39. //var_dump($data); 
  40. /* 
  41. array( 
  42.    'HBO', 
  43.    '本週新片', 
  44.    '熱映中', 
  45. ) 
  46. */ 
  47.  
  48.  
  49.  
  50. $data = $dbAdapter->query(" 
  51.    SELECT id, name, method FROM category 
  52. ")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC); 
  53.  
  54. //var_dump($data); 
  55. /* 
  56. array( 
  57.    '1' => array( 
  58.        'name' => 'HBO', 
  59.        'method' => 'service', 
  60.    ), 
  61.    '2' => array( 
  62.        'name' => '本週新片', 
  63.        'method' => 'movie', 
  64.    ), 
  65.    '3' => array( 
  66.        'name' => '熱映中', 
  67.        'method' => 'movie', 
  68.    ), 
  69. ) 
  70. */ 
  71.  
  72.  
  73.  
  74. $data = $dbAdapter->query(" 
  75.    SELECT method, id, name FROM category 
  76. ")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC); 
  77.  
  78. //var_dump($data); 
  79. /* 
  80. array( 
  81.    'service' => array( 
  82.        'id' => '1', 
  83.        'name' => 'HBO', 
  84.    ), 
  85.    'movie' => array( 
  86.        'id' => '3', 
  87.        'name' => '熱映中', 
  88.    ), 
  89. ) 
  90. */ 
  91.  
  92.  
  93.  
  94. $data = $dbAdapter->query(" 
  95.    SELECT id, name, method FROM category 
  96. ")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_COLUMN); 
  97.  
  98. //var_dump($data); 
  99. /* 
  100. array( 
  101.    '1' => 'HBO', 
  102.    '2' => '本週新片', 
  103.    '3' => '熱映中', 
  104. ) 
  105. */ 
  106.  
  107.  
  108.  
  109. $data = $dbAdapter->query(" 
  110.    SELECT method, name, id FROM category 
  111. ")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_COLUMN); 
  112.  
  113. //var_dump($data); 
  114. /* 
  115. array( 
  116.    'service' => 'HBO', 
  117.    'movie' => '熱映中', 
  118. ) 
  119. */ 
  120.  
  121.  
  122.  
  123.  
  124. $data = $dbAdapter->query(" 
  125.    SELECT method, id, name FROM category 
  126. ")->fetchAll( PDO::FETCH_ASSOC | PDO::FETCH_GROUP); 
  127.  
  128. //var_dump($data); 
  129. /* 
  130. array( 
  131.    'service' => array( 
  132.        array( 
  133.            'id' => '1' 
  134.            'name' => 'HBO' 
  135.        ), 
  136.    ) 
  137.    'movie' => array( 
  138.        array( 
  139.          'id' => '2' 
  140.          'name' => '本週新片' 
  141.        ), 
  142.        array( 
  143.          'id' => '3' 
  144.          'name' => '熱映中' 
  145.        ), 
  146.    ) 
  147. ) 
  148. */ 
  149.  
  150.  
  151.  
  152.  
  153. $data = $dbAdapter->query(" 
  154.    SELECT method, name, id FROM category 
  155. ")->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_COLUMN); 
  156.  
  157. //var_dump($data); 
  158. /* 
  159. array( 
  160.    'service' => array( 
  161.        'HBO' 
  162.    ), 
  163.    'movie' => array( 
  164.        '本週新片' 
  165.        '熱映中' 
  166.    ), 
  167. ) 
  168. */ 
  169.  
  170.  
  171.  
  172.  
  173.  
  174. $data = $dbAdapter->query(" 
  175.    SELECT id, name, method FROM category 
  176. ")->fetchAll(PDO::FETCH_OBJ); 
  177.  
  178. //var_dump($data); 
  179. /* 
  180. array( 
  181.    stdClass{ 
  182.        public $id = '1'; 
  183.        public $name = 'HBO'; 
  184.        public $method = 'service'; 
  185.    }, 
  186.    stdClass{ 
  187.        public $id = '2'; 
  188.        public $name = '本週新片'; 
  189.        public $method = 'movie'; 
  190.    }, 
  191.    stdClass{ 
  192.        public $id = '3'; 
  193.        public $name = '熱映中'; 
  194.        public $method = 'movie'; 
  195.    }, 
  196. ) 
  197. */ 
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205. class Category_1 {} 
  206.  
  207. $data = $dbAdapter->query(" 
  208.    SELECT id, name, method FROM category 
  209. ")->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, "Category_1"); 
  210.  
  211. //var_dump($data); 
  212. /* 
  213. array( 
  214.    Category_1{ 
  215.        public $id = '1'; 
  216.        public $name = 'HBO'; 
  217.        public $method = 'service'; 
  218.    }, 
  219.    Category_1{ 
  220.        public $id = '2'; 
  221.        public $name = '本週新片'; 
  222.        public $method = 'movie'; 
  223.    }, 
  224.    Category_1{ 
  225.        public $id = '3'; 
  226.        public $name = '熱映中'; 
  227.        public $method = 'movie'; 
  228.    }, 
  229. ), 
  230. */ 
  231.  
  232.  
  233.  
  234.  
  235.  
  236. class Category_2 { 
  237.    public $name; 
  238.    public $method; 
  239.  
  240.    public function __construct() {} 
  241.    public function __set($name, $value ){} 
  242. } 
  243.  
  244. $data = $dbAdapter->query(" 
  245.    SELECT id, name, method FROM category 
  246. ")->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, "Category_2"); 
  247.  
  248. //var_dump($data); 
  249. /* 
  250. array( 
  251.    Category_2{ 
  252.        public $name = 'HBO'; 
  253.        public $method = 'service'; 
  254.    }, 
  255.    Category_2{ 
  256.        public $name = '本週新片'; 
  257.        public $method = 'movie'; 
  258.    }, 
  259.    Category_2{ 
  260.        public $name = '熱映中'; 
  261.        public $method = 'movie'; 
  262.    }, 
  263. ) 
  264. */