PHP PDO fetch 模式各种参数的输出结果一览

  PDO 的 fetch 模式功能实在是太方便了,但每次要产生想要的结果都要试太麻烦了,这里列出可能的组合。

  

复制代码 代码如下:

  <?php

  $dbAdapter = new PDO("mysql:host=localhost;dbname=test", "root", "1234");

  $dbAdapter->exec("SET NAMES 'utf8';");

  $data = $dbAdapter->query("

  SELECT id, name, method FROM category

  ")->fetchAll(PDO::FETCH_ASSOC);

  //var_dump($data);

  /*

  array(

  array(

  'id' => '1',

  'name' => 'HBO',

  'method' => 'service',

  ),

  array(

  'id' => '2',

  'name' => '本周新片',

  'method' => 'movie',

  ),

  array(

  'id' => '3',

  'name' => '热映中',

  'method' => 'movie',

  ),

  )

  */

  $data = $dbAdapter->query("

  SELECT name, method FROM category

  ")->fetchAll(PDO::FETCH_COLUMN);

  //var_dump($data);

  /*

  array(

  'HBO',

  '本周新片',

  '热映中',

  )

  */

  $data = $dbAdapter->query("

  SELECT id, name, method FROM category

  ")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC);

  //var_dump($data);

  /*

  array(

  '1' => array(

  'name' => 'HBO',

  'method' => 'service',

  ),

  '2' => array(

  'name' => '本周新片',

  'method' => 'movie',

  ),

  '3' => array(

  'name' => '热映中',

  'method' => 'movie',

  ),

  )

  */

  $data = $dbAdapter->query("

  SELECT method, id, name FROM category

  ")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_ASSOC);

  //var_dump($data);

  /*

  array(

  'service' => array(

  'id' => '1',

  'name' => 'HBO',

  ),

  'movie' => array(

  'id' => '3',

  'name' => '热映中',

  ),

  )

  */

  $data = $dbAdapter->query("

  SELECT id, name, method FROM category

  ")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_COLUMN);

  //var_dump($data);

  /*

  array(

  '1' => 'HBO',

  '2' => '本周新片',

  '3' => '热映中',

  )

  */

  $data = $dbAdapter->query("

  SELECT method, name, id FROM category

  ")->fetchAll(PDO::FETCH_UNIQUE | PDO::FETCH_COLUMN);

  //var_dump($data);

  /*

  array(

  'service' => 'HBO',

  'movie' => '热映中',

  )

  */

  $data = $dbAdapter->query("

  SELECT method, id, name FROM category

  ")->fetchAll( PDO::FETCH_ASSOC | PDO::FETCH_GROUP);

  //var_dump($data);

  /*

  array(

  'service' => array(

  array(

  'id' => '1'

  'name' => 'HBO'

  ),

  )

  'movie' => array(

  array(

  'id' => '2'

  'name' => '本周新片'

  ),

  array(

  'id' => '3'

  'name' => '热映中'

  ),

  )

  )

  */

  $data = $dbAdapter->query("

  SELECT method, name, id FROM category

  ")->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_COLUMN);

  //var_dump($data);

  /*

  array(

  'service' => array(

  'HBO'

  ),

  'movie' => array(

  '本周新片'

  '热映中'

  ),

  )

  */

  $data = $dbAdapter->query("

  SELECT id, name, method FROM category

  ")->fetchAll(PDO::FETCH_OBJ);

  //var_dump($data);

  /*

  array(

  stdClass{

  public $id = '1';

  public $name = 'HBO';

  public $method = 'service';

  },

  stdClass{

  public $id = '2';

  public $name = '本周新片';

  public $method = 'movie';

  },

  stdClass{

  public $id = '3';

  public $name = '热映中';

  public $method = 'movie';

  },

  )

  */

  class Category_1 {}

  $data = $dbAdapter->query("

  SELECT id, name, method FROM category

  ")->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, "Category_1");

  //var_dump($data);

  /*

  array(

  Category_1{

  public $id = '1';

  public $name = 'HBO';

  public $method = 'service';

  },

  Category_1{

  public $id = '2';

  public $name = '本周新片';

  public $method = 'movie';

  },

  Category_1{

  public $id = '3';

  public $name = '热映中';

  public $method = 'movie';

  },

  ),

  */

  class Category_2 {

  public $name;

  public $method;

  public function __construct() {}

  public function __set($name, $value ){}

  }

  $data = $dbAdapter->query("

  SELECT id, name, method FROM category

  ")->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, "Category_2");

  //var_dump($data);

  /*

  array(

  Category_2{

  public $name = 'HBO';

  public $method = 'service';

  },

  Category_2{

  public $name = '本周新片';

  public $method = 'movie';

  },

  Category_2{

  public $name = '热映中';

  public $method = 'movie';

  },

  )

  */