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'; }, ) */