Inicio » Blog » PHP

Generar JSON desde una consulta MYSQL

Autor: J. Luis, 8 abril, 2025

Json es un formato que nos permite transportar datos de forma rápida y sencilla, generaremos JSON a partir de una consulta a la base de datos de 3 tablas.

Convertir datos de una base de datos MySQL en formato JSON es una tarea común en el desarrollo web, especialmente para aplicaciones que necesitan enviar información a frontend o APIs. En este tutorial, te guiaré paso a paso para que aprendas a realizar una consulta MySQL con PHP y transformar los resultados en un archivo JSON de forma sencilla y eficiente.

Índice:

  1. Configurar la conexión a MySQL
  2. Crear una consulta SQL
  3. Procesar los resultados con PHP
  4. Convertir los datos a JSON
  5. Manejar errores y optimizar

Este tutorial te permitirá generar JSON dinámicamente desde tu base de datos, ideal para proyectos como APIs REST, aplicaciones móviles o dashboards interactivos. ¡Empecemos!


Paso 1: Configurar la Conexión a MySQL

Primero, necesitas conectar tu script PHP a una base de datos MySQL. Usaremos la extensión mysqli (también puedes usar PDO si prefieres). Aquí tienes un ejemplo básico:

php


// Parámetros de conexión
$host = "localhost";      // Host de la base de datos
$user = "root";           // Usuario de MySQL
$password = "";           // Contraseña (vacía por defecto en localhost)
$database = "mi_base_de_datos"; // Nombre de tu base de datos

// Crear la conexión
$conn = mysqli_connect($host, $user, $password, $database);

// Verificar la conexión
if (!$conn) {
    die("Error de conexión: " . mysqli_connect_error());
}

Nota: Asegúrate de reemplazar los valores de $user, $password y $database con los de tu entorno. Si usas un servidor remoto, ajusta $host también.


Paso 2: Crear una Consulta SQL

Define una consulta SQL para obtener los datos que deseas convertir a JSON. Por ejemplo, supongamos que tienes una tabla llamada usuarios con las columnas id, nombre y email. La consulta sería:

sql

SELECT id, nombre, email FROM usuarios;

​​​​​​​En PHP, ejecutamos esta consulta usando mysqli_query:

php

// Definir la consulta
$sql = "SELECT id, nombre, email FROM usuarios";

// Ejecutar la consulta
$result = mysqli_query($conn, $sql);

// Verificar si la consulta tuvo éxito
if (!$result) {
    die("Error en la consulta: " . mysqli_error($conn));
}

Paso 3: Procesar los Resultados con PHP

Los resultados de la consulta deben almacenarse en un arreglo PHP para luego convertirlos a JSON. Usaremos mysqli_fetch_assoc() para recorrer las filas y guardarlas en un arreglo:

php

// Arreglo para almacenar los datos
$data = [];

// Recorrer los resultados
while ($row = mysqli_fetch_assoc($result)) {
    $data[] = $row; // Agregar cada fila al arreglo
}

En este punto, $data contendrá un arreglo asociativo con los datos de la tabla usuarios. Por ejemplo:

php

[
    ["id" => 1, "nombre" => "Juan Pérez", "email" => "juan@example.com"],
    ["id" => 2, "nombre" => "María López", "email" => "maria@example.com"]
]

Paso 4: Convertir los Datos a JSON

PHP ofrece la función json_encode() para transformar el arreglo en un string JSON. Agreguemos esto al código:

php

// Convertir el arreglo a JSON
$json_data = json_encode($data, JSON_PRETTY_PRINT);

// Establecer el encabezado para indicar que la respuesta es JSON
header('Content-Type: application/json');

// Mostrar el JSON
echo $json_data;

JSON_PRETTY_PRINT: Opcional, hace que el JSON sea más legible con indentación.

  • header(): Indica al navegador o cliente que la respuesta es un archivo JSON.

El resultado podría verse así:

json

[
    {
        "id": 1,
        "nombre": "Juan Pérez",
        "email": "juan@example.com"
    },
    {
        "id": 2,
        "nombre": "María López",
        "email": "maria@example.com"
    }
]

Paso 5: Manejar Errores y Optimizar

Es buena práctica manejar errores y cerrar la conexión a la base de datos. Aquí está el código completo con estas mejoras:

php

// Parámetros de conexión
$host = "localhost";
$user = "root";
$password = "";
$database = "mi_base_de_datos";

// Crear la conexión
$conn = mysqli_connect($host, $user, $password, $database);

// Verificar la conexión
if (!$conn) {
    die(json_encode(["error" => "Error de conexión: " . mysqli_connect_error()]));
}

// Definir la consulta
$sql = "SELECT id, nombre, email FROM usuarios";
$result = mysqli_query($conn, $sql);

// Verificar la consulta
if (!$result) {
    die(json_encode(["error" => "Error en la consulta: " . mysqli_error($conn)]));
}

// Arreglo para los datos
$data = [];
while ($row = mysqli_fetch_assoc($result)) {
    $data[] = $row;
}

// Convertir a JSON
$json_data = json_encode($data, JSON_PRETTY_PRINT);

// Verificar si json_encode falló
if ($json_data === false) {
    die(json_encode(["error" => "Error al generar el JSON: " . json_last_error_msg()]));
}

// Establecer encabezado y mostrar el JSON
header('Content-Type: application/json');
echo $json_data;

// Cerrar la conexión
mysqli_close($conn);

Optimizaciones:

  • Si no hay resultados, el JSON será un arreglo vacío ([]), lo cual es válido.
  • En caso de error, se devuelve un objeto JSON con un mensaje de error.
  • La conexión se cierra con mysqli_close() para liberar recursos.

Ejemplo Práctico

  1. Crea una base de datos llamada mi_base_de_datos.
  2. Crea una tabla usuarios con este SQL:

    sql

    CREATE TABLE usuarios (
        id INT AUTO_INCREMENT PRIMARY KEY,
        nombre VARCHAR(100),
        email VARCHAR(100)
    );
    INSERT INTO usuarios (nombre, email) VALUES 
        ('Juan Pérez', 'juan@example.com'),
        ('María López', 'maria@example.com');
    Guarda el código PHP en un archivo (por ejemplo, get_json.php).
  3. Sube el archivo a un servidor con PHP y MySQL (como XAMPP) y accede a él desde el navegador (ejemplo: http://localhost/get_json.php).

Leido 12790 veces | 1 usuarios

Descarga del código fuente

Generar JSON desde una consulta MYSQL

Accede al código fuente esencial de nuestra aplicación en formato ZIP ó TXT. Ideal para desarrolladores que desean personalizar o integrar nuestra solución.

  • [ Descargas: 0 ]

Compartir link del tutorial con tus amigos

Preguntas para generar JSON con PHP

...

1. ¿Qué extensión de PHP se usa comúnmente para conectar a MySQL en este tutorial?

2. ¿Qué función establece la conexión a la base de datos en el ejemplo?

3. ¿Qué hace la función mysqli_query()?

4. ¿Qué función PHP convierte un arreglo a formato JSON?

5. ¿Qué encabezado HTTP indica que la respuesta es JSON?

6. ¿Qué hace mysqli_fetch_assoc() en el contexto del tutorial?

7. ¿Qué opción de json_encode() mejora la legibilidad del JSON?

8. ¿Qué sucede si la conexión a MySQL falla en el código del tutorial?

9. ¿Qué función cierra la conexión a la base de datos?

10. ¿Por qué es importante cerrar la conexión a MySQL?

CÓDIGO FUENTE: USD 0.00

Conversar con J.Luis

Codea Applications

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú