English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderás cómo leer registros de una tabla MySQL usando PHP.
Hasta ahora, ya has aprendido cómo crear bases de datos y tablas y cómo insertar datos. Ahora es el momento de recuperar los datos insertados en el tutorial anterior. SQL SELECTLa sentencia se utiliza para leer registros de la tabla de base de datos. Su sintaxis básica es la siguiente:
SELECT column1_name, column2_name, columnN_name FROM table_name ;
Vamos a usar la sentencia SELECT para realizar consultas SQL, luego ejecutaremos esta consulta SQL pasándola al función PHP mysqli_query() para recuperar los datos de la tabla.
Por favor, vea nuestrospersonsLa tabla de base de datos tiene los siguientes registros:
+----+------------+-----------+----------------------+ | id | first_name | last_name | email | +----+------------+-----------+----------------------+ |}} 1 | Peter | Parker | [email protected] | |}} 2 | John | Rambo | [email protected] | |}} 3 | Clark | Kent | [email protected] | |}} 4 | John | Carter | [email protected] | |}} 5 | Harry | Potter | [email protected] | +----+------------+-----------+----------------------+
El siguiente ejemplo de código PHP selecciona todos los datos almacenados en la tabla persons (usando el carácter de asterisco (*):*) en lugar de los nombres de las columnas para seleccionar todos los datos de la tabla.
<?php /*Intentar conectar con el servidor MySQL. Supongamos que está ejecutando MySQL. Servidor con configuración predeterminada (usuario sin contraseña "root") */ $link = mysqli_connect("localhost", "root", "", "demo"); //Verificar la conexión if($link === false){ die("Error: No se puede conectar. " . mysqli_connect_error()); } //Intentar ejecutar una consulta de selección $sql = "SELECT * FROM persons"; if($result = mysqli_query($link, $sql)){ if(mysqli_num_rows($result) > 0){ echo "<table>"; echo "<tr>"; echo "<th>id</th>"; echo "<th>first_name</th>"; echo "<th>last_name</th>"; echo "<th>email</th>"; echo "</tr>"; while($row = mysqli_fetch_array($result)){ echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td>" . $row['first_name'] . "</td>"; echo "<td>" . $row['last_name'] . "</td>"; echo "<td>" . $row['email'] . "</td>"; echo "</tr>"; } echo "</table>"; // Liberar el conjunto de resultados mysqli_free_result($result); } else{ echo "No se encontraron registros que coincidan con su consulta."; } } else{ echo "Error: No se puede ejecutar $sql. " . mysqli_error($link); } //Cerrar la conexión mysqli_close($link); ?>
<?php /*Intentar conectar con el servidor MySQL. Supongamos que está ejecutando MySQL. Servidor con configuración predeterminada (usuario sin contraseña "root") */ $mysqli = new mysqli("localhost", "root", "", "demo"); //Verificar la conexión if($mysqli === false){ die("Error: No se puede conectar. " . $mysqli->connect_error); } //Intente seleccionar la ejecución de la consulta $sql = "SELECT * FROM persons"; if($result = $mysqli->query($sql)){ if($result->num_rows > 0){ echo "<table>"; echo "<tr>"; echo "<th>id</th>"; echo "<th>first_name</th>"; echo "<th>last_name</th>"; echo "<th>email</th>"; echo "</tr>"; while($row = $result->fetch_array()){ echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td>" . $row['first_name'] . "</td>"; echo "<td>" . $row['last_name'] . "</td>"; echo "<td>" . $row['email'] . "</td>"; echo "</tr>"; } echo "</table>"; //Liberar el conjunto de resultados $result->free(); } else{ echo "No se encontraron registros que coincidan con su consulta."; } } else{ echo "Error: No se puede ejecutar $sql. " . $mysqli->error; } //Cerrar la conexión $mysqli->close(); ?>
<?php /*Intentar conectar con el servidor MySQL. Supongamos que está ejecutando MySQL. Servidor con configuración predeterminada (usuario sin contraseña "root") */ try{ $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", ""); //Establecer el modo de error de PDO en excepción $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e){ die("Error: No se puede conectar. " . $e)->getMessage()); } //Intente seleccionar la ejecución de la consulta try{ $sql = "SELECT * FROM persons"; $result = $pdo->query($sql); if($result->rowCount() > 0){ echo "<table>"; echo "<tr>"; echo "<th>id</th>"; echo "<th>first_name</th>"; echo "<th>last_name</th>"; echo "<th>email</th>"; echo "</tr>"; while($row = $result->fetch()){ echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td>" . $row['first_name'] . "</td>"; echo "<td>" . $row['last_name'] . "</td>"; echo "<td>" . $row['email'] . "</td>"; echo "</tr>"; } echo "</table>"; //Liberar el conjunto de resultados unset($result); } else{ echo "No se encontraron registros que coincidan con su consulta."; } } catch(PDOException $e){ die("Error: No se puede ejecutar $sql. " . $e->getMessage()); } //Cerrar la conexión unset($pdo); ?>
En el ejemplo anterior, los datos devueltos por la función mysqli_query() se almacenan en la variable $result. Cada vez que se llama a mysqli_fetch_array(), devuelve la siguiente fila en el conjunto de resultados como un array.bucle whileSe utiliza para buscar todas las filas en el conjunto de resultados. Finalmente, se puede pasar el índice de campo o el nombre del campo al variable $row (por ejemplo $row['id'] o $row[0],$row['first_name'] o $row [1,$row['last_name'] o $row[2,$row['email'] o $row[3)para acceder al valor de un campo individual en la línea.
Si desea usarbucle forSe puede obtener el valor del contador de bucle o el número de filas devueltas por la consulta pasando el variable $result a la función mysqli_num_rows(). Este valor de contador de bucle determina cuántas veces debe ejecutarse el bucle.