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 参数的值,此参数有不同的意义:
/* 获取结果集中所有剩余的行 */
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 语句自身可能返回每行多列。
$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 数组仅包含一种颜色。
$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) {
string(5) "green"
string(3) "red"
["pear"]=>
array(2) {
string(5) "green"
string(6) "yellow"
["watermelon"]=>
array(1) {
string(5) "green"
每行结果实例化一个类
下面列子演示了 PDO::FETCH_CLASS 获取风格的行为。
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) {
object(fruit)#1 (2) {
["name"]=>
string(5) "apple"
["colour"]=>
string(5) "green"
object(fruit)#2 (2) {
["name"]=>
string(4) "pear"
["colour"]=>
string(6) "yellow"
object(fruit)#3 (2) {
["name"]=>
string(10) "watermelon"
["colour"]=>
string(4) "pink"
每行调用一次函数
下面列子演示了 PDO::FETCH_FUNC 获取风格的行为。
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) {
string(12) "apple: green"
string(12) "pear: yellow"
string(16) "watermelon: pink"
PHP PDO 参考手册