PDOStatement::fetch

PHP PDO 参考手册PHP PDO Reference Manual

PDOStatement::fetch — Fetches the next row from a result set (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)


Description

Syntax

mixed PDOStatement::fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )

Fetches the next row from a result set associated with a PDOStatement object. The fetch_style parameter determines how PDO returns the row.


Parameters

fetch_style

Controls how the next row will be returned to the caller. This value must be one of the PDO::FETCH_* constants, defaulting to the value of PDO::ATTR_DEFAULT_FETCH_MODE (which defaults to PDO::FETCH_BOTH).

  • PDO::FETCH_ASSOC: returns an array indexed by result set column names

  • PDO::FETCH_BOTH(default): returns an array indexed by both result set column names and 0-based column numbers

  • PDO::FETCH_BOUND: returnsTRUE, and assigns the column values in the result set to the PHP variables bound by the PDOStatement::bindColumn() method.

  • PDO::FETCH_CLASS: returns a new instance of the requested class, mapping the columns of the result set to the corresponding property names in the class. Iffetch_stylecontains PDO::FETCH_CLASSTYPE (e.g.,PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE), the class name is determined by the value of the first column

  • PDO::FETCH_INTO: updates an existing instance of the requested class, mapping the columns of the result set to the named properties in the class

  • PDO::FETCH_LAZY: used in combination withPDO::FETCH_BOTHandPDO::FETCH_OBJ, creates object variable names for access

  • PDO::FETCH_NUM: returns an array indexed by 0-based result set column numbers

  • PDO::FETCH_OBJ: returns an anonymous object with property names corresponding to the result set column names

cursor_orientation
For a scrollable cursor represented by a PDOStatement object, this value determines which row will be returned to the caller. This value must be one of the PDO::FETCH_ORI_* constants, defaulting to PDO::FETCH_ORI_NEXT. To make the PDOStatement object use a scrollable cursor, you must set the PDO::ATTR_CURSOR attribute to PDO::CURSOR_SCROLL when preparing the SQL statement with PDO::prepare().

offset
For a scrollable cursor represented by a PDOStatement object with the cursor_orientation parameter set to PDO::FETCH_ORI_ABS, this value specifies the absolute row number of the row to be fetched in the result set.
For a scrollable cursor represented by a PDOStatement object with the cursor_orientation parameter set to PDO::FETCH_ORI_REL, this value specifies the position of the row to be fetched relative to the cursor position before calling PDOStatement::fetch().


Return Values

The value returned by this function (method) on success depends on the fetch type. In all cases, FALSE is returned on failure.


Examples

Fetch rows with different fetch styles

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* 运用 PDOStatement::fetch 风格 */
print("PDO::FETCH_ASSOC: ");
print("Return next row as an array indexed by column name\n");
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
print("\n");

print("PDO::FETCH_BOTH: ");
print("Return next row as an array indexed by both column name and number\n");
$result = $sth->fetch(PDO::FETCH_BOTH);
print_r($result);
print("\n");

print("PDO::FETCH_LAZY: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_LAZY);
print_r($result);
print("\n");

print("PDO::FETCH_OBJ: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_OBJ);
print $result->NAME;
print("\n");
?>

The above example will output:

PDO::FETCH_ASSOC: Return next row as an array indexed by column name
Array
(
    [NAME] => apple
    [COLOUR] => red
)

PDO::FETCH_BOTH: Return next row as an array indexed by both column name and number
Array
(
    [NAME] => banana
    [0] => banana
    [COLOUR] => yellow
    [1] => yellow
)

PDO::FETCH_LAZY: Return next row as an anonymous object with column names as properties
PDORow Object
(
    [NAME] => orange
    [COLOUR] => orange
)

PDO::FETCH_OBJ: Return next row as an anonymous object with column names as properties
kiwi

Fetch rows using a scrollable cursor

<?php
function readDataForwards($dbh) {
  $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY BET';
  try {
    $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
    $stmt->execute();
    while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
      $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
      print $data;
    }
    $stmt = null;
  }
  catch (PDOException $e) {
    print $e->getMessage();
  }
}
function readDataBackwards($dbh) {
  $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY bet';
  try {
    $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
    $stmt->execute();
    $row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST);
    do {
      $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
      print $data;
    } while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_PRIOR));
    $stmt = null;
  }
  catch (PDOException $e) {
    print $e->getMessage();
  }
}

print "Reading forwards:\n";
readDataForwards($conn);

print "Reading backwards:\n";
readDataBackwards($conn);
?>

The above example will output:

Reading forwards:
21    10    5
16    0     5
19    20    10

Reading backwards:
19    20    10
16    0     5
21    10    5

PHP PDO 参考手册PHP PDO Reference Manual

Other Extensions