Después de ejecutar una sentencia que devuelve uno o más conjuntos de resultados,
utilice uno de los métodos disponibles en la API de PDO para iterar por las filas devueltas. La API de PDO ofrece también métodos para captar una única columna de una o varias filas en el conjunto de resultados.
Antes de empezar
Debe tener un recurso de sentencia que haya devuelto el método PDO::query o PDOStatement::execute que tenga asociados uno o varios conjuntos de resultados.
Procedimiento
Para captar datos de un conjunto de resultados:
- Capte los datos de un conjunto de resultados llamando a uno de los métodos de captación:
- Para devolver una única fila de un conjunto de resultados como una matriz
u objeto, llame al método PDOStatement::fetch.
- Para devolver todas las filas del conjunto de resultados como una matriz de
matrices u objetos, llame al método PDOStatement::fetchAll.
Por omisión, PDO devuelve cada fila como una matriz indexada por el nombre de
columna y la posición de columna indexada 0 en la fila. Para solicitar un
estilo de devolución diferente, especifique una de las constantes
PDO::FETCH_* como primer parámetro al llamar al método
PDOStatement::fetch:
PDO::FETCH_ASSOC
- Devuelve una matriz indexada por nombre de columna tal y como se ha
devuelto en el conjunto de resultados.
PDO::FETCH_BOTH (valor por omisión)
- Devuelve una matriz indexada tanto por nombre de columna como por
número de columna indexado 0 en el conjunto de resultados
PDO::FETCH_BOUND
- Devuelve TRUE y asigna los valores de las columnas del conjunto de resultados
a las variables de PHP a las que estaban vinculadas con el método
PDOStatement::bindParam.
PDO::FETCH_CLASS
- Devuelve una nueva instancia de la clase solicitada, correlacionando
las columnas del conjunto de resultados con las propiedades con nombre de la clase.
PDO::FETCH_INTO
- Actualiza una instancia existente de la clase solicitada,
correlacionando las columnas del conjunto de resultados con las
propiedades de la clase.
PDO::FETCH_LAZY
- Combina
PDO::FETCH_BOTH y PDO::FETCH_OBJ, creando
los nombres de variable de objeto conforme se accede a los mismos.
PDO::FETCH_NUM
- Devuelve una matriz indexada por número de columna tal y como se ha
devuelto en el conjunto de resultados, empezando en la columna 0.
PDO::FETCH_OBJ
- Devuelve un objeto anónimo con nombres de propiedad que se
corresponden con los nombres de columna devueltos en el conjunto
de resultados.
Si ha solicitado un cursor desplazable al llamar al método
PDO::query o
PDOStatement::execute,
puede pasar los parámetros opcionales listados que controlan qué filas se devuelven al emisor:
- Una de las constantes
PDO::FETCH_ORI_* que representa la orientación de captación de la petición de captación:
PDO::FETCH_ORI_NEXT (valor por omisión)
- Capta la siguiente fila del conjunto de resultados.
PDO::FETCH_ORI_PRIOR
- Capta la fila anterior del conjunto de resultados.
PDO::FETCH_ORI_FIRST
- Capta la primera fila del conjunto de resultados.
PDO::FETCH_ORI_LAST
- Capta la última fila del conjunto de resultados.
PDO::FETCH_ORI_ABS
- Capta la fila absoluta del conjunto de resultados. Requiere un entero
positivo como tercer argumento para el método
PDOStatement::fetch.
PDO::FETCH_ORI_REL
- capta la fila relativa del conjunto de resultados. Requiere un entero
positivo o negativo como tercer argumento para el método
PDOStatement::fetch.
- Entero que solicita la fila absoluta o relativa del conjunto de resultados,
correspondiente a la orientación de captación solicitada en el segundo argumento
al método
PDOStatement::fetch.
- Opcional: Capte una sola columna de una o más filas de un conjunto de resultados llamando a uno de los métodos listados:
- Para devolver una sola columna desde una sola fila del conjunto de resultados:
Llame al método PDOStatement::fetchColumn especificando la columna que desee recuperar como el primer argumento del método. Los números de columna empiezan en 0. Si no especifica una columna, PDOStatement::fetchColumn devuelve la primera columna de la fila.
- Para devolver una matriz que contenga una sola columna de todas las filas restantes del conjunto de resultados:
Llame al método PDOStatement::fetchAll pasando la constante PDO::FETCH_COLUMN como el primer argumento y la columna que desea recuperar como el segundo argumento. Los números de columna empiezan en 0. Si no especifica una columna, la llamada a PDOStatement::fetchAll(PDO::FETCH_COLUMN) devuelve la primera columna de la fila.
Ejemplo
Devolver una matriz indexada por número de columna.
$stmt = $conn->query("SELECT firstnme, lastname FROM employee");
while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
print "Name: <p>{$row[0] $row[1]}</p>";
}
Qué hacer a continuación
Cuando esté listo para cerrar la conexión a la base de datos, establezca el objeto PDO en NULL. La conexión se cierra automáticamente cuando finaliza el script de PHP.