> Manuales > Manual de PHP

Veremos cómo recuperar información de una tabla de la base de datos, con la sentencia SQL de selección, desde una página PHP y cómo mostrar los registros encontrados en la página.

Selección y lectura de registros con PHP

Seguimos con los artículos dedicados a las bases de datos en PHP. En este momento estamos ya en condiciones de leer registros de la tabla y mostrarlos en una página para la visualización de información por parte de los usuarios.

Ten en cuenta que este es el tercer capítulo dedicado a las bases de datos del Manual de PHP y que para poder seguirlos tienes que leer en la secuencia. Primero hemos hecho la conexión con la base de datos desde PHP y luego hemos realizado las primeras inserciones de datos en la tabla.

Procedimiento de recuperación de registros de la tabla

Dentro de una base de datos, organizada por tablas, la selección de una tabla entera o de un cierto número de registros resulta una operación rutinaria.

El procedimiento de acceso para recuperar registros de una tabla de la base de datos se resume en los siguientes pasos:

  1. Conexión con la base de datos
  2. Creación de una sentencia SQL de selección
  3. Ejecución de la sentencia sobre el motor de la base de datos

Las funciones que utilizaremos para hacer estas operativas son las mismas que vimos en artículos anteriores. Sin embargo, a diferencia de la ejecución de una sentencia de inserción que recordarás nos devolvía un boleano, como resultado de la ejecución de la sentencia SQL de selección PHP nos devolverá un conjunto de registros encontrados.

El código hasta este punto sería el siguiente:

//Conexion con la base
include 'conexion.php';
$conexion = conexion();

// Componemos la sentencia SQL
$ssql = "select * from clientes";

// Ejecutamos la sentencia SQL
$result = $conexion->query($ssql);

Recuerda que el código del include de conexion.php lo vimos anteriormente.

Iterar sobre el conjunto de resultados de la selección

Ese conjunto de registros estará disponible por medio de un objeto de resultados. En el código anterior ese objeto de resultados lo hemos guardado en la variable $result, sobre el cual podremos hacer las operaciones necesarias para mostrarlos en la página.

Sobre el objeto de resultados podremos ejecutar un método llamado fetch_array() que nos devolverá el primero de los registros. La segunda vez que lo invoquemos nos devolverá el segundo registro y así todo seguido hasta que no haya más registros, en cuyo caso devolverá vacío.

Por tanto, podemos usar típicamente un bucle while que recibe, fila a fila, los registros de la tabla, hasta que no queda ninguno.

Aquí os mostramos una forma bastante clásica de mostrar en pantalla los registros seleccionados por una sentencia SQL, a partir de un bucle realizado iterando sobre todos las filas recogidas mediante una consulta SQL sobre una tabla de la base de datos.

<table>
  <tr>
    <th>Nombre</th>
    <th>Teléfono</th>
  </tr>
  <?php
    //Mostramos los registros
    while ($row = $result->fetch_array()) {
      echo '<tr><td>' . $row["nombre"] . '</td>';
      echo '<td>' . $row["telefono"] . '</td></tr>';
    }
    $result->free_result();
    $conexion->close();
  ?>
</table>

Quizás la mayor dificultad de este código la represente la siguiente instrucción de cabecera del bucle while:

while ($row = $result->fetch_array()) {

Esta instrucción se ejecuta de la siguiente manera:

Como hemos recibido $row en formato de array, por medio de fetch_array(), cada una de las columnas del registro se obtienen como un array asociativo: $row["nombre"]. Existen otros métodos para obtener el registro como un objeto. Sería usando fetch_object() y en ese caso el dato lo obtendrías con notación de objeto, mediante $row->nombre.

Elegir entre fetch_array() o fetch_object() es solo cuestión de gustos o de costumbres, por lo que no existe diferencia de hacerlo de una manera o de otra, más allá de que tu código cambiará un poco.

Todo el código de selección de datos con PHP

Ahora vamos a ver todo el código del script PHP de selección de datos de la tabla, para que quede claro el proceso completo incluido dentro de una página web.

<!DOCTYPE html>
<html lang="es">
<head>
  <title>Seleccionar</title>
</head>
<body>
  <h1>
    Lectura de la tabla
  </h1>

  <?php
  //Conexion con la base
  include 'conexion.php';
  $conexion = conexion();

  // Componemos la sentencia SQL
  $ssql = "select * from clientes";

  // Ejecutamos la sentencia SQL
  $result = $conexion->query($ssql);
  ?>
  <table>
    <tr>
      <th>Nombre</th>
      <th>Teléfono</th>
    </tr>
    <?php
      //Mostramos los registros
      while ($row = $result->fetch_array()) {
        echo '<tr><td>' . $row["nombre"] . '</td>';
        echo '<td>' . $row["telefono"] . '</td></tr>';
      }
      $result->free_result();
      $conexion->close();
    ?>
  </table>

  <p>
    <a href="insertar.php">Añadir un nuevo registro</a>
  </p>

</body>
</html>

Eso es todo! En el siguiente artículo avanzaremos en el trabajo con la base de datos mostrando cómo podríamos realizar el proceso de actualización de un registro de la tabla.

Rubén Alvarez

Rubén es doctor en química y programador principalmente en sus ratos libres con...

Manual