PDOStatement::fetch
Manual de referencia de PHP PDO
PDOStatement::fetch — Obtiene la siguiente fila de un conjunto de resultados (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
Descripción
Sintaxis
mixed PDOStatement::fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )
Obtiene la siguiente fila de un conjunto de resultados asociado a un objeto PDOStatement. El parámetro fetch_style determina cómo devuelve PDO las filas.
Parámetros
fetch_style
Controla cómo se devuelve la siguiente fila al llamador. Este valor debe ser una de las constantes de la serie PDO::FETCH_*, por defecto es el valor de PDO::ATTR_DEFAULT_FETCH_MODE (que por defecto es PDO::FETCH_BOTH).
PDO::FETCH_ASSOC: Devuelve un array indexado por los nombres de las columnas del conjunto de resultados.
PDO::FETCH_BOTH(por defecto): Devuelve un array indexado por los nombres de las columnas del conjunto de resultados y por los números de columna comenzando en 0.
PDO::FETCH_BOUND: Devuelve
TRUE, y asigna los valores de las columnas del conjunto de resultados a las variables PHP vinculadas con el método PDOStatement::bindColumn().PDO::FETCH_CLASS: Devuelve una nueva instancia de la clase solicitada, mapeando los nombres de las columnas del conjunto de resultados a los nombres de propiedades correspondientes de la clase. Si
fetch_styleincluye PDO::FETCH_CLASSTYPE (por ejemplo:PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE), entonces el nombre de la clase queda determinado por el valor de la primera columna.PDO::FETCH_INTO: Actualiza una instancia existente de la clase solicitada, mapeando las columnas del conjunto de resultados a las propiedades nombradas de la clase.
PDO::FETCH_LAZY: CombinaPDO::FETCH_BOTHyPDO::FETCH_OBJ, creando nombres de variables de objeto para su acceso.
PDO::FETCH_NUM: Devuelve un array indexado por números de columna del conjunto de resultados comenzando en 0.
PDO::FETCH_OBJ: Devuelve un objeto anónimo con nombres de propiedades correspondientes a los nombres de las columnas del conjunto de resultados.
cursor_orientation
Para un cursor desplazable representado por un objeto PDOStatement, este valor determina qué fila se devolverá al llamador. Este valor debe ser una de las constantes de la serie PDO::FETCH_ORI_*, siendo el valor predeterminado PDO::FETCH_ORI_NEXT. Para que un objeto PDOStatement utilice un cursor desplazable, debe establecerse el atributo PDO::ATTR_CURSOR a PDO::CURSOR_SCROLL al preparar la sentencia SQL con PDO::prepare().
offset
Para un cursor desplazable representado por un objeto PDOStatement cuyo parámetro cursor_orientation está establecido a PDO::FETCH_ORI_ABS, este valor especifica el número de fila absoluto de la fila deseada en el conjunto de resultados.
Para un cursor desplazable representado por un objeto PDOStatement cuyo parámetro cursor_orientation está establecido a PDO::FETCH_ORI_REL, este valor especifica la posición de la fila deseada con respecto a la posición del cursor antes de llamar a PDOStatement::fetch().
Valores devueltos
El valor devuelto por esta función (método) en caso de éxito depende del tipo de extracción. En todos los casos, un fallo devuelve FALSE.
Ejemplos
Obtener filas con diferentes modos de extracción
<?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");
?>
El ejemplo anterior generará la siguiente salida:
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
Obtener filas con un cursor desplazable
<?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);
?>
El ejemplo anterior generará la siguiente salida:
Reading forwards: 21 10 5 16 0 5 19 20 10 Reading backwards: 19 20 10 16 0 5 21 10 5
Otras extensiones