Con PHP puedes extraer fá­ci­l­me­n­te in­fo­r­ma­ción de una base de datos MySQL o MariaDB. Para ello, primero debes es­ta­ble­cer una conexión con la base de datos y después ejecutar una consulta SQL mediante la función mysqli_query() de PHP, cuyos re­su­l­ta­dos pueden pro­ce­sar­se y mostrarse en la página web.

Bases de datos ge­s­tio­na­das
Bases de datos seguras y fáciles de usar
  • Ar­qui­te­c­tu­ra de primera ge­s­tio­na­da por expertos
  • So­lu­cio­nes flexibles adaptadas a tus ne­ce­si­da­des
  • Seguridad máxima en centros de datos con ce­r­ti­fi­ca­ción ISO

Re­qui­si­tos

Para obtener in­fo­r­ma­ción de una base de datos MySQL o MariaDB con PHP, debes cumplir algunos re­qui­si­tos básicos. Primero, necesitas un entorno PHP funcional en el servidor, no­r­ma­l­me­n­te junto con un servidor web como Apache o Nginx. Si aún no dispones de él, primero debes instalar PHP. Además, asegúrate de tener MySQL o MariaDB in­s­ta­la­dos. Por último, PHP debe contar con la extensión MySQLi, que no­r­ma­l­me­n­te viene incluida en la mayoría de in­s­ta­la­cio­nes estándar.

Obtener in­fo­r­ma­ción de MySQL/MariaDB con PHP

En este tutorial te mostramos cómo crear una base de datos MySQL o MariaDB con su tabla y usuario, y cómo acceder a ella desde PHP. Paso a paso, apre­n­de­rás a construir una pequeña página web de ejemplo que consulta las va­lo­ra­cio­nes de re­s­tau­ra­n­tes al­ma­ce­na­das en la base de datos y las muestra en una tabla HTML.

Paso 1: crear la base de datos

El primer paso consiste en crear la base de datos. Para ello, inicia sesión en el cliente de MySQL o MariaDB desde la línea de comandos:

mysql -u root -p

Crea una base de datos para las reseñas:

CREATE DATABASE reviews;

Cambia a esta base de datos:

USE reviews;

Para este ejemplo, crearemos una sola tabla con los si­guie­n­tes campos:

  • ID: clave principal de la tabla, co­n­fi­gu­ra­da como AUTO_INCREMENT
  • Nombre del evaluador: campo de texto con una longitud máxima de 100 ca­ra­c­te­res
  • Ca­li­fi­ca­ción de estrellas: valor numérico del 1 al 5 (tipo TINYINT)
  • Reseña: campo de texto con un límite apro­xi­ma­do de 500 palabras (tipo VARCHAR(4000))

Crea la tabla con el comando CREATE TABLE:

CREATE TABLE user_review (
id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
reviewer_name VARCHAR(100),
star_rating TINYINT,
details VARCHAR(4000)
);

Ahora añadimos dos reseñas de ejemplo a la tabla:

INSERT INTO user_review (reviewer_name, star_rating, details) VALUES ('Ben', '5', 'Love the calzone!');
INSERT INTO user_review (reviewer_name, star_rating, details) VALUES ('Leslie', '1', Calzones are the worst.');

Paso 2: crear usuario de base de datos

En el siguiente paso, crea un usuario para la base de datos. Por razones de seguridad, siempre es mejor crear un usuario único para cada base de datos, es­pe­cia­l­me­n­te si se accede desde una página web.

El siguiente comando crea un usuario llamado review_site con la co­n­tra­se­ña Jx­S­L­R­k­du­tW y le otorga acceso a la base de datos recién creada:

CREATE USER 'review_site'@'localhost' IDENTIFIED BY 'JxSLRkdutW';
GRANT SELECT ON reviews.* TO 'review_site'@'localhost';

Paso 3: crear script PHP

Nota

El código de este tutorial se ha si­m­pli­fi­ca­do con fines ilu­s­tra­ti­vos. Al de­sa­rro­llar una página web, te re­co­me­n­da­mos seguir las prácticas de seguridad ha­bi­tua­les para ga­ra­n­ti­zar que tus scripts PHP no co­m­pro­me­tan el acceso ni la seguridad del servidor.

Crea un archivo showreviews.php en tu espacio web y ábrelo para editar. Por ejemplo, para crear el archivo en el di­re­c­to­rio /var/www/html, el comando con el editor nano es:

sudo nano /var/www/html/showreviews.php

En nuestro ejemplo, el PHP estará in­cru­s­ta­do en HTML, por lo que la página comenzará con las de­cla­ra­cio­nes básicas de HTML. El estilo CSS también se encuentra en el en­ca­be­za­do HTML:

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<style> 
    table { 
        border-collapse: collapse; 
        margin: 20px auto; 
        width: 80%; 
    } 
    th, td { 
        border: 1px solid black; 
        padding: 5px 10px; 
        text-align: left; 
    } 
</style> 
</head> 
<body>
html

Cada script PHP debe comenzar con la etiqueta de apertura PHP:

<?php
php

A co­n­ti­nua­ción, añade un bloque de conexión MySQL/MariaDB con la ubicación del servidor (localhost), el nombre de la base de datos, así como el nombre de usuario y la co­n­tra­se­ña de la base de datos.

$hostname = "localhost"; 
$username = "review_site"; 
$password = "JxSLRkdutW"; 
$db = "reviews";
php

Después, añadimos una sección para es­ta­ble­cer una conexión con la base de datos. Si la conexión falla, se mostrará un mensaje de error. Puedes es­ta­ble­cer una conexión entre tu script PHP y tu base de datos MySQL o MariaDB con mysqli_connect(). Se pasan el nombre del host, el nombre de usuario, la co­n­tra­se­ña y el nombre de la base de datos, de modo que PHP sepa exac­ta­me­n­te con qué base de datos debe trabajar.

$dbconnect=mysqli_connect($hostname,$username,$password,$db); 
if (!$dbconnect) { 
die("Database connection failed: " . mysqli_connect_error()); 
} 
?>
php

Paso 4: insertar la tabla

En el siguiente paso, añade el siguiente código HTML al script para crear la tabla donde mo­s­tra­re­mos los datos:

<table> 
 
<tr> 
<th>Reviewer Name</th> 
<th>Stars</th> 
<th>Details</th> 
</tr>
html

A co­n­ti­nua­ción, sigue el código PHP que consulta la base de datos, recorre los re­su­l­ta­dos y muestra cada reseña en su propia fila de la tabla:

<?php 
$query = mysqli_query($dbconnect, "SELECT * FROM user_review") 
or die (mysqli_error($dbconnect)); 
while ($row = mysqli_fetch_array($query)) { 
echo  "<tr> 
<td>{$row['reviewer_name']}</td> 
<td>{$row['star_rating']}</td> 
<td>{$row['details']}</td> 
</tr>\n";
} 
?>
php

Recuerda cerrar la tabla y el bloque HTML al final del documento:

</table> 
</body> 
</html>
html

Para probar el script, abre showreviews.php en un navegador.

Imagen: Visualización de showreviews.php en el navegador
La tabla ahora se muestra en el navegador.

Paso 5: el script completo

El script PHP completo es:

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<style> 
    table { 
        border-collapse: collapse; 
        margin: 20px auto; 
        width: 80%; 
    } 
    th, td { 
        border: 1px solid black; 
        padding: 5px 10px; 
        text-align: left; 
    } 
</style> 
</head> 
<body> 
<?php 
$hostname = "localhost"; 
$username = "review_site"; 
$password = "JxSLRkdutW"; 
$db = "reviews"; 
$dbconnect=mysqli_connect($hostname,$username,$password,$db); 
if (!$dbconnect) { 
die("Database connection failed: " . mysqli_connect_error()); 
} 
?> 
<table> 
<tr> 
<th>Reviewer Name</th> 
<th>Stars</th> 
<th>Details</th> 
</tr> 
<?php 
$query = mysqli_query($dbconnect, "SELECT * FROM user_review") 
or die (mysqli_error($dbconnect)); 
while ($row = mysqli_fetch_array($query)) { 
echo  "<tr> 
<td>{$row['reviewer_name']}</td> 
<td>{$row['star_rating']}</td> 
<td>{$row['details']}</td> 
</tr>\n"; 
} 
mysqli_close($dbconnect);
?> 
</table> 
</body> 
</html>
php

Con esto, tu script PHP ya muestra los datos al­ma­ce­na­dos en MySQL/MariaDB di­re­c­ta­me­n­te en una tabla HTML.

Ir al menú principal