# Cómo extraer información de MySQL/MariaDB con PHP mysqli\_query

Con PHP puedes extraer fácilmente información de una base de datos MySQL o MariaDB. Para ello, primero debes establecer una conexión con la base de datos y después ejecutar una consulta SQL mediante la función `mysqli_query()` de PHP, cuyos resultados pueden procesarse y mostrarse en la página web.

## Requisitos

Para obtener información de una base de datos MySQL o MariaDB con [PHP](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/que-es-php/), debes cumplir algunos requisitos básicos. Primero, necesitas un **entorno PHP funcional en el servidor**, normalmente junto con un servidor web como [Apache](https://www.ionos.com/es-us/digitalguide/servidores/know-how/que-es-apache/) o [Nginx](https://www.ionos.com/es-us/digitalguide/servidores/configuracion/nginx-conceptos-basicos-instalacion-y-configuracion/). Si aún no dispones de él, primero debes [instalar PHP](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/instalar-php/). Además, asegúrate de tener [MySQL](https://www.ionos.com/es-us/digitalguide/servidores/know-how/que-es-mysql/) o [MariaDB](https://www.ionos.com/es-us/digitalguide/servidores/know-how/que-es-mariadb/) instalados. Por último, PHP debe contar con la extensión MySQLi, que normalmente viene incluida en la mayoría de instalaciones estándar.

## Obtener informació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, aprenderás a construir una pequeña página web de ejemplo que consulta las valoraciones de restaurantes almacenadas en la base de datos y las muestra en una [tabla HTML](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/tablas-en-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:

```none
mysql -u root -p
```

Crea una base de datos para las reseñas:

```none
CREATE DATABASE reviews;
```

Cambia a esta base de datos:

```none
USE reviews;
```

Para este ejemplo, crearemos una sola tabla con los siguientes campos:

- ID: clave principal de la tabla, configurada como AUTO\_INCREMENT
- Nombre del evaluador: campo de texto con una longitud máxima de 100 caracteres
- Calificación de estrellas: valor numérico del 1 al 5 (tipo TINYINT)
- Reseña: campo de texto con un límite aproximado de 500 palabras (tipo VARCHAR(4000))

Crea la tabla con el comando [CREATE TABLE](https://www.ionos.com/es-us/digitalguide/hosting/cuestiones-tecnicas/mariadb-create-table/):

```none
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:

```none
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, especialmente si se accede desde una página web.

El siguiente comando crea un usuario llamado *review\_site* con la contraseña *JxSLRkdutW* y le otorga acceso a la base de datos recién creada:

```none
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 simplificado con fines ilustrativos. Al desarrollar una página web, te recomendamos seguir las prácticas de seguridad habituales para garantizar que tus scripts PHP no comprometan 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 directorio `/var/www/html`, el comando con el editor nano es:

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

En nuestro ejemplo, el PHP estará incrustado en HTML, por lo que la página comenzará con las declaraciones básicas de HTML. El estilo [CSS](https://www.ionos.com/es-us/digitalguide/paginas-web/diseno-web/que-es-css/) también se encuentra en el encabezado HTML:

```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>
```

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

```php
<?php
```

A continuació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 contraseña de la base de datos.

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

Después, añadimos una sección para establecer una conexión con la base de datos. Si la conexión falla, se mostrará un mensaje de error. Puedes establecer 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 contraseña y el nombre de la base de datos, de modo que PHP sepa exactamente con qué base de datos debe trabajar.

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

### Paso 4: insertar la tabla

En el siguiente paso, añade el siguiente código HTML al script para crear la tabla donde mostraremos los datos:

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

A continuación, sigue el código PHP que consulta la base de datos, recorre los resultados y muestra cada reseña en su propia fila de la tabla:

```php
<?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";
} 
?>
```

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

```html
</table> 
<div class="hash d-none" hidden>hash_7ed3228940ec5882c60f613fe64ca0df4497c468</div><script data-shy-copy-guard>(function(){var C=[0x00AD,0x200B,0x200C,0x200D,0x2060,0xFEFF];var s=function(t){for(var i=0;i<C.length;i++){t=t.split(String.fromCharCode(C[i])).join("");}return t;};document.addEventListener("copy",function(e){var sel=document.getSelection();if(!sel||sel.isCollapsed||!e.clipboardData){return;}e.clipboardData.setData("text/plain",s(sel.toString()));try{var d=document.createElement("div");d.appendChild(sel.getRangeAt(0).cloneContents());e.clipboardData.setData("text/html",s(d.innerHTML));}catch(x){}e.preventDefault();});})();</script></body> 
</html>
```

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

[![Imagen: Visualización de showreviews.php en el navegador](https://www.ionos.com/es-us/digitalguide/fileadmin/_processed_/6/a/csm_mysql-mariadb-php-info_cb4362a58b.webp "Visualización de showreviews.php en el navegador")](https://www.ionos.com/es-us/digitalguide/fileadmin/DigitalGuide/Screenshots_2025/mysql-mariadb-php-info.jpg) La tabla ahora se muestra en el navegador. ### Paso 5: el script completo

El script PHP completo es:

```php
<!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> 
<div class="hash d-none" hidden>hash_7ed3228940ec5882c60f613fe64ca0df4497c468</div><script data-shy-copy-guard>(function(){var C=[0x00AD,0x200B,0x200C,0x200D,0x2060,0xFEFF];var s=function(t){for(var i=0;i<C.length;i++){t=t.split(String.fromCharCode(C[i])).join("");}return t;};document.addEventListener("copy",function(e){var sel=document.getSelection();if(!sel||sel.isCollapsed||!e.clipboardData){return;}e.clipboardData.setData("text/plain",s(sel.toString()));try{var d=document.createElement("div");d.appendChild(sel.getRangeAt(0).cloneContents());e.clipboardData.setData("text/html",s(d.innerHTML));}catch(x){}e.preventDefault();});})();</script></body> 
</html>
```

Con esto, tu script PHP ya muestra los datos almacenados en MySQL/MariaDB directamente en una tabla HTML.


This is a markdown version of: [https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/obtener-datos-de-una-base-de-datos-con-php-mysqli-query/](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/obtener-datos-de-una-base-de-datos-con-php-mysqli-query/) for AI/LLM consumption.