PDOStatement::fetch
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: returns
TRUE, 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. If
fetch_stylecontains PDO::FETCH_CLASSTYPE (e.g.,PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE), the class name is determined by the value of the first columnPDO::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
Other Extensions
PHP PDO Reference Manual