Captación de filas o columnas de conjuntos de resultados en PHP (PDO)

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:

  1. 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.
  2. 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.

    Para obtener más información sobre la API de PDO, consulte http://php.net/manual/en/book.pdo.php.

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.