Saltar al contenido
PHP

SQL a JSON en PHP con 3 pasos

Convertir SQL a JSON con PHP

¿Qué es un fichero JSON?

JSON en PHP

Viene de JavaScript Object Notation (JSON) y es un formato estándar abierto basado en tipo texto que sirve para codificar y mostrar datos estructurados de un servidor (backend) a una aplicación web (frontend). El formato JSON es fácil de leer y escribir para los humanos.

¿Hace lo mismo un fichero XML?

Pues sí, hace los mismo. Tanto ficheros JSON o ficheros XML se pueden usar para recibir datos de un servidor a una aplicación web. Pero vamos a ver con profundidad una breve diferencia entre JSON y XML

Similitudes entre JSON y XML

  • Son autodescriptivos, es decir, que el código es legible por humanos.
  • Son jerárquicos, almacenan valores dentro de valores respetando un rango.
  • Pueden ser analizados y utilizados para muchos lenguajes de programación.
  • Se pueden recuperar con un XMLHttpRequest (Peticiones a http y https)

Diferencias entre JSON y XML

  • No usa la etiqueta final.
  • Es más corto.
  • Es más rápido de leer y escribir.
  • Puede usar matrices.
  • Puede ser analizado por una función estándar de JavaScript (XML debe ser analizado con un analizador XML).

¿Por qué JSON es mejor que XML?

  • XML es mucho más difícil de analizar que JSON.
  • JSON se analiza en un objeto JavaScript listo para usar.
  • Para aplicaciones AJAX, JSON es más rápido y fácil que XML:
    • XML:
      • Obtiene un documento XML.
      • Usa el DOM para recorrer el documento.
      • Extrae valores y los almacena en variables.
    • JSON:
      • Obtiene una cadena JSON.
      • Recorrer la cadena JSON.

Vamos a crear nuestro JSON en PHP

Preparamos la consulta de SQL

Lo primero que tenemos que hacer para convertir nuestro JSON en PHP, es preparar nuestra consulta SQL. Además, en el caso de asociar varias tablas, es mejor utilizar alias para todos los campos. Así diferenciamos sin problemas qué campo y tabla queremos mostrar. Voy a mostrar la siguiente consulta de ejemplo:

SELECT JSON_OBJECT("id",idtienda,"nombre",nombre,"direccion",direccion,"cp",cp,"ciudad",ciudad,"provincia",provincia,"cif",cif,"telefono",telefono,"email",email,"paginaweb",paginaweb) as jsonClientes from clientes

Más información: Si quieres saber cómo se utiliza JSON_OBJECT, te dejo su documentación.

Si estás usando SQL Server, se usa FOR JSON PATH y la consulta sería así:

SELECT idtienda,nombre,direccion,cp,ciudad,provincia,cif,telefono,email,paginaweb) as jsonClientes FROM clientes
FOR JSON PATH

PHP

El siguiente paso es tener los datos de nuestro proveedor de Hosting (o de nuestro servidor local) y los rellenamos en el código (dentro de la función conectar()).

Conexión con la Base de Datos

<?php
//Función para conectarnos con la BBDD 
function conectar(){
    // Rellenamos todos los datos para conectarnos a la BBDD
    $x=new mysqli(
        "", // URL
        "", // Usuario
        "", // Clave
        "" // Nombre 
    );
    //En caso de haber un error de conexión a la BBDD...
    if ($x->connect_errno){
        //Salimos de la conexión con el error
        die ("Error: ".$x->mysqli_connect_errno().$x->mysqli_connect_error());
        exit(); 
    }
return $x;
}
?>

Vamos a generar nuestro fichero JSON en PHP

Lo primero que tenemos que indicar al servidor, es que se trata de un fichero JSON con
header('Content-Type: application/json');

Nos conectamos a la Base de Datos y vamos a recoger los datos de nuestra consulta SQL.

En lugar de mostrarlo en pantalla todas las filas de los registros, lo almacenamos en un Array:
$sqlArray["data"][].

En el último apartado, vamos a poder elegir dos opciones
1- mostrar la codificación del Array en formato JSON.
2- Guarda en el servidor la codificación del Array en un fichero con formato JSON.

<?php
	// Indicamos que este documento va a ser tipo JSON
	header('Content-Type: application/json');
	session_start();

	// Incluímos nuestro fichero bd.php para conectarnos a la BBDD.
	include_once("func/bd.php");

	// Nos conectamos a nuestra Base de Datos
	$c=conectar();
	mysqli_set_charset($c,"utf8");

	// Indicamos nuestra query
	$consulta=$c->query("SELECT JSON_OBJECT("id",idtienda,"nombre",nombre,"direccion",direccion,"cp",cp,"ciudad",ciudad,"provincia",provincia,"cif",cif,"telefono",telefono,"email",email,"paginaweb",paginaweb) as json from clientes");

	// Si la consulta está mal formulada, saltará error
	if(!$consulta){
		die("Error en la consulta SQL");
	}

	// Recorremos las filas del resultado de la query y lo metemos en un array
	while($sql=$consulta->fetch_assoc()){
		$sqlArray=$sql;	
	}

	// Iteramos la consulta y lo añadimos al Array
	foreach($c->query($consulta) as $fila) {
		printf("'%s'@'%s'\n", $fila['user'], $fila['host']);
	}

	$mostrarJSON=true; // true: mostrará los datos JSON en php | false: guardará el fichero json en un fichero .json 
	if($mostrarJSON){	
		echo json_encode($sqlArray);
	}else{
		$listaTiendas = "json/listaTiendas.json";
		$data = json_encode($sqlArray); 
		
		// Ojo, > de tener creada la carpeta 'json'
		if ($fp = fopen($listaEmpleos, "w")){
			fwrite($fp, $data);
		}
		fclose($fp);
	}
?>

¡Y ya tenemos nuestro fichero JSON en PHP! Si estás interesado en cómo crear un fichero XML, te recomiendo que eches un vistado a este POST ➜ https://lacodigoteca.com/jquery/mostrar-datos-sql-en-html/