PDOStatement::fetch
Recupera una fila de un conjunto de resultados.
Sintaxis
mixed PDOStatement::fetch ([ $fetch_style[, $cursor_orientation[, $cursor_offset]]] );
Parámetros
$fetch_style: símbolo opcional (entero) que especifica el formato de los datos de la fila. Vea la sección Comentarios para obtener la lista de posibles valores de $fetch_style. El valor predeterminado es PDO::FETCH_BOTH.El parámetro $fetch_style del método fetch reemplaza al parámetro $fetch_style especificado en el método PDO::query.
$cursor_orientation: símbolo opcional (entero) que indica la fila que se va a recuperar cuando la instrucción prepare especifica PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL
. Vea la sección Comentarios para obtener la lista de posibles valores de $cursor_orientation. Consulte PDO::prepare para obtener un ejemplo donde se utiliza un cursor desplazable.
$cursor_offset: símbolo opcional (entero) que especifica la fila que se va a capturar cuando $cursor_orientation es PDO::FETCH_ORI_ABS o PDO::FETCH_ORI_REL, y PDO::ATTR_CURSOR es PDO::CURSOR_SCROLL.
Valor devuelto
Un valor mixto que devuelve una fila o False.
Observaciones
Cuando se llama al método de captura, el cursor avanza automáticamente. La tabla siguiente contiene la lista de posibles valores de $fetch_style.
$fetch_style | Descripción |
---|---|
PDO::FETCH_ASSOC | Especifica una matriz indizada por el nombre de columna. |
PDO::FETCH_BOTH | Especifica una matriz indizada por el nombre de columna y el orden basado en 0. Este es el valor predeterminado. |
PDO::FETCH_BOUND | Devuelve el valor True y asigna los valores tal y como se especifica en PDOStatement::bindColumn. |
PDO::FETCH_CLASS | Crea una instancia y asigna las columnas a las propiedades con nombre. Llame a PDOStatement::setFetchMode antes que al método de captura. |
PDO::FETCH_INTO | Actualiza una instancia de la clase solicitada. Llame a PDOStatement::setFetchMode antes que al método de captura. |
PDO::FETCH_LAZY | Crea nombres de variables durante el acceso y crea un objeto sin nombre. |
PDO::FETCH_NUM | Especifica una matriz indizada por el orden de columna de base cero. |
PDO::FETCH_OBJ | Especifica un objeto sin nombre con los nombres de propiedad que se asignan a los nombres de columna. |
Si el cursor se encuentra al final del conjunto de resultados (se ha recuperado la última fila y el cursor ha avanzado más allá del límite del conjunto de resultados) y si es de solo avance (PDO::ATTR_CURSOR = PDO::CURSOR_FWDONLY), se producirá un error en las llamadas de recuperación posteriores.
Si el cursor es desplazable (PDO::ATTR_CURSOR = PDO::CURSOR_SCROLL), el método de captura moverá el cursor dentro del límite del conjunto de resultados. La tabla siguiente contiene la lista de posibles valores de $cursor_orientation.
$cursor_orientation | Descripción |
---|---|
PDO::FETCH_ORI_NEXT | Recupera la fila siguiente. Este es el valor predeterminado. |
PDO::FETCH_ORI_PRIOR | Recupera la fila anterior. |
PDO::FETCH_ORI_FIRST | Recupera la primera fila. |
PDO::FETCH_ORI_LAST | Recupera la última fila. |
PDO::FETCH_ORI_ABS, num | Recupera la fila solicitada en $cursor_offset por número de fila. |
PDO::FETCH_ORI_REL, num | Recupera la fila solicitada en $cursor_offset por posición relativa desde la posición actual. |
Si el valor especificado para $cursor_offset o $cursor_orientation se traduce en una posición fuera del límite del conjunto de resultados, se produce un error de captura.
En la versión 2.0 de los Controladores de Microsoft para PHP para SQL Server, se agregó compatibilidad con PDO.
Ejemplo
<?php
$server = "(local)";
$database = "AdventureWorks";
$conn = new PDO( "sqlsrv:server=$server ; Database = $database", "", "");
print( "\n---------- PDO::FETCH_CLASS -------------\n" );
$stmt = $conn->query( "select * from HumanResources.Department order by GroupName" );
class cc {
function __construct( $arg ) {
echo "$arg";
}
function __toString() {
return $this->DepartmentID . "; " . $this->Name . "; " . $this->GroupName;
}
}
$stmt->setFetchMode(PDO::FETCH_CLASS, 'cc', array( "arg1 " ));
while ( $row = $stmt->fetch(PDO::FETCH_CLASS)) {
print($row . "\n");
}
print( "\n---------- PDO::FETCH_INTO -------------\n" );
$stmt = $conn->query( "select * from HumanResources.Department order by GroupName" );
$c_obj = new cc( '' );
$stmt->setFetchMode(PDO::FETCH_INTO, $c_obj);
while ( $row = $stmt->fetch(PDO::FETCH_INTO)) {
echo "$c_obj\n";
}
print( "\n---------- PDO::FETCH_ASSOC -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_ASSOC );
print_r( $result );
print( "\n---------- PDO::FETCH_NUM -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_NUM );
print_r ($result );
print( "\n---------- PDO::FETCH_BOTH -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_BOTH );
print_r( $result );
print( "\n---------- PDO::FETCH_LAZY -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_LAZY );
print_r( $result );
print( "\n---------- PDO::FETCH_OBJ -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$result = $stmt->fetch( PDO::FETCH_OBJ );
print $result->Name;
print( "\n \n" );
print( "\n---------- PDO::FETCH_BOUND -------------\n" );
$stmt = $conn->query( "select * from Person.ContactType where ContactTypeID < 5 " );
$stmt->bindColumn('Name', $name);
$result = $stmt->fetch( PDO::FETCH_BOUND );
print $name;
print( "\n \n" );
?>