(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
PDOStatement::fetch — Obtiene la siguiente fila del conjunto de resultados
$fetch_style
[, int $cursor_orientation
= PDO::FETCH_ORI_NEXT
[, int $cursor_offset
= 0
]]] )
Obtiene una fila del conjunto de resultados asociado al objeto PDOStatement. El
parámetro fetch_style
determina cómo devuelve la fila PDO.
the row.
fetch_style
Controla cómo se devolverá la siguiente fila. Este valor debe ser una de las constantes PDO::FETCH_*, estando predeterminado PDO::ATTR_DEFAULT_FETCH_MODE (el cual 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 tanto por nombre de columna, como numéricamente a partir del 0, del conjunto de resultados.
PDO::FETCH_BOUND: devuelve TRUE
y asigna los
valores de las columnas del conjunto de resultados a las variables PHP las cuales
fueron usadas en el método PDOStatement::bindColumn().
PDO::FETCH_CLASS: devuelve una nueva instancia de la
clase solicitada, mapeando las columnas del conjunto de resultados con los
nombres de las propiedades de la clase. Si fetch_style
incluye PDO::FETCH_CLASSTYPE (por ejemplo, PDO::FETCH_CLASS |
PDO::FETCH_CLASSTYPE) entonces el nombre de la clase
se determina a partir del valor de la primera columna.
PDO::FETCH_INTO: actualiza una instancia existente de la clase solicitada, mapeando el nombre de las columnas con los nombres de las propiedades de la clase.
PDO::FETCH_LAZY: combina PDO::FETCH_BOTH y PDO::FETCH_OBJ, creando los nombre de la variable objeto como son accedidos.
PDO::FETCH_NUM: devuelve un array indexado por número de columna como son devueltos en el conjunto de resultados, comenzando por la columna 0.
PDO::FETCH_OBJ: devuelve un objeto anónimo con nombres de propiedades correspondientes a los nombres de las columnas devueltas en el conjunto de resultados.
cursor_orientation
Para un objeto PDOStatement representando un cursor desplazable, este valor determina qué columna será devuelta por la función. Este valor debe ser una de las constantes PDO::FETCH_ORI_*, siendo por defecto PDO::FETCH_ORI_NEXT. Para solicitar un cursor desplazable para el objeto PDOStatement, se debe establecer el atributo PDO::ATTR_CURSOR a PDO::CURSOR_SCROLL cuando se prepare la sentencia SQL con PDO::prepare().
offset
Para un objeto PDOStatement representando un cursor desplazable para el cual el parámetro cursor_orientation está establecido a PDO::FETCH_ORI_ABS, este valor especifica el número absoluto de la fila del conjunto de resultados que se desea obtener.
Para un objeto PDOStatement representando un cursor desplazable para el cual el parámetro cursor_orientation está establecido a PDO::FETCH_ORI_REL, este valor especifica la fila a obtener relativa a la posición del cursor antes de que se llame a PDOStatement::fetch().
El valor de retorno de esta función en caso de éxito depende del tipo de obtención. En
todos los casos, se devuelve FALSE
en caso de error.
Ejemplo #1 Obtención de filas usando diferentes tipos de obtención
<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* Prueba de tipos de 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 resultado del ejemplo sería:
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
Ejemplo #2 Obteniendo 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 resultado del ejemplo sería:
Reading forwards: 21 10 5 16 0 5 19 20 10 Reading backwards: 19 20 10 16 0 5 21 10 5