Sentencias preparadas en MySQL con PHP

Sentencias preparadas en MySQL con PHP
Juan Carlos G2020-01-03

¿Cómo utilizar sentencias preparadas en MySQL?

Viajeros Web hoy traigo un excelente vídeo donde aprenderemos a utilizar las Prepared Statements o sentencias preparadas en MySQL con PHP,  es la continuación de la clase ¿Cómo insertar datos en MySQL con PHP? así que ve y no te pierdas la clase anterior.

 

📌 Suscríbete a mi canal y activa la campanita para que no te pierdas ningún video 🤘

 

¿Qué aprenderás de las sentencias preparadas?

Rápidamente haré un resumen del vídeo de la clase para te des una idea de lo potente que es este vídeo, para empezar lo que veremos es como leer un archivo JSON e insertar cada uno de los datos a través de una sentencia preparada en MySQL

  • Aprenderás a leer un archivo JSON desde PHP a través de las funciones file_get_contents y json_decode
  • Crear una consulta de insert que servirá de modelo para realizar nuestro insert a través de una sintaxis orientada a objetos, por procedimientos y PDO
  • Comprenderás las ventajas de utilizar este tipo de sentencias
  • Como siempre utilizaremos phpMyAdmin para realizar las pruebas y comprobar que nuestro código funciona correctamente

 

Como puedes observar veremos aspectos muy importantes para el desarrollo en PHP, estos aspectos aunque parecieran básicos son muy usados al momento de desarrollar páginas web por cientos de desarrolladores, así que pasemos a la clase.

 

 

¿Que necesito para utilizar sentencias preparadas en MySQL?

Las herramientas son las mismas que hemos venido manejando y que seguramente ya las tienes, sin embargo, como siempre te dejo la lista mas importante:

Ahora pasemos a revisar un poco de teoría y de conceptos que nunca están de más apreder

 

¿Que son las sentencias preparadas?

En pocas palabras un sentencia preparada (Prepared Statements ) o sentencias parametrizadas es una plantilla de un query o consulta que queremos ejecutar una gran cantidad de veces.

Por lo regular ejecutamos una sentencia preparada dentro de un ciclo y es aquí donde solo variar los parámetros trae excelentes beneficios

Como leer un archivo JSON desde PHP

Esto es relativamente muy sencillo y lo podemos hacer con algunas líneas de código con las funciones:

  • file_get_contents - Esta función nos permite pasar un archivo del filesystem a una cadena
  • json_decode - Decodifica o convierte un string a un JSON

En nuestro caso ocuparemos file_get_contents para leer el archivo JSON el cual convierte en una cadena y después utilizamos json_decode para convertir esa cadena en un array asociativo, por ejemplo:

 

$json = file_get_contents('./datos.json'); 
$jsonDatos = json_decode($json, true);

 

Donde datos.json es nuestro archivo que utilizamos en la clase, te recomiendo ver el vídeo para ver todo esto en acción, $jsonDatos contiene los valores de nuestro JSON y solo tenemos que recorrer este arreglo para poder acceder a cada elemento de este JSON

 

¿Como crear una sentencia preparada en MySQL con PHP?

Ya que tenemos nuestro JSON listo para recorrer y obtener sus datos los vamos a insertar en nuestra tabla "resumen_productos" a través de la creación de una sentencia preparada. Si quieres saber como crear la tabla "resumen_productos", mira el segundo vídeo de esta serie.

Ejemplo con Sintaxis objetos y por procedimientos

 

$strInsert = " 
   insert into resumen_productos 
       (nombre,categoria,precio,cantidad_vendidos,en_almacen,fecha_alta) 
   values 
       (?,?,?,?,?,?) 
   ";

 

Ejemplo con sintaxis PDO

 

$strInsertPDO = " 
           insert into resumen_productos 
               (nombre,categoria,precio,cantidad_vendidos,en_almacen,fecha_alta) 
           values 
               (:nombre,:categoria,:precio,:cantidad_vendidos,:en_almacen,:fecha_alta) 
           ";

 

Donde $strInsert y $strInsertPDO serán los modelos de las consultas que utilizaremos

 

¿Como ejecutar una sentencia preparada en MySQL con PHP?

Ahora que ya tenemos definida la consulta ejecutemos la sentencia en un ciclo donde recorreremos el JSON datos.json e insertaremos cada calor en la tabla "resumen_productos"

Lo primero que debemos hacer es abrir la conexión a base de datos dependiendo de la sintaxis que estés trabajando, en este ejemplo veremos la sintaxis PDO, si quieres ver como se hace por MySQLi te recomiendo ver el vídeo de la clase.

 

try { 
 

           //Abriendo conexión a MySQL con PDO

          $oConBD = new PDO("mysql:host=" . $ipBD . ";dbname=" . $nombreBD, $usuarioBD, $passBD); 
           echo "Conexión exitosa..." . " "; 
 

           //Indica la sentencia o query a ejecutar

          $pQuery = $oConBD->prepare($strInsertPDO); 

               //Ciclo foreach para recorrer el json e insertar valor por valor
               foreach ($jsonDatos as $id => $valor) { 

                    //bindParam nos permite asignar un valor a la variable declarada en nuestro modelo del query
                   $pQuery->bindParam(':nombre', $valor["nombre"]); 
                   $pQuery->bindParam(':categoria', $valor["categoria"]); 
                   $pQuery->bindParam(':precio', $valor["precio"]); 
                   $pQuery->bindParam(':cantidad_vendidos', $valor["cantidad_vendidos"]); 
                   $pQuery->bindParam(':en_almacen', $valor["en_almacen"]); 
                   $pQuery->bindParam(':fecha_alta', $valor["fecha_alta"]); 

                    //execute() ejecuta la consulta preparada
                   $pQuery->execute(); 

                     //Recuperamos el ultimo Id agregado a la tabla para validar el Insert
                   $idInsertado = $oConBD->lastInsertId(); 
                   echo ("Nombre: " . $valor["nombre"] . ", Ultimo ID: " . $idInsertado . " "); 
               } 
               $oConBD = null;

} catch (PDOException $e) { 
           echo "Error al conectar a la base de datos: " . $e->getMessage() . " "; 
           return false; 
}

 

En resumen el código anterior nos permite ejecutar una sentencia o query tantas veces como parámetros del JSON tiene, y lo hicimos a través de la sintaxis PDO en PHP y los pasos fueron los siguientes

  • Apertura de la conexión a la base de datos en MySQL desde PHP
  • prepare - permite establecer la sentencia a ejecutar
  • Apertura del ciclo de para insertar y recorrer el JSON
  • bindParam - permite igualar un valor entre la variable dentro del modelo o platilla de la consulta y un valor real en este caso es un parámetro del JSON datos.json
  • execute -  ejecuta la preparación de la sentencia enviando al servidor de base de datos únicamente los valores y no toda la sentencia o query
  • lastInsertId() - recupera el último Id insertado en la tabla

 

Listo ya has aprendido ¿Qué son, Cómo crear y Cómo ejecutar una sentencia preparada en MySQL con PHP, ahora para que hiciste todo esto, que ventajas tiene, a continuación para cerrar este POST y corras a compartirlo te dejo las ventajas de trabajar así.

 

Ventaja de las sentencias preparadas

Podemos resumir esto en tres grandes ventajas y son las siguientes

Ahorro de tiempo de procesamiento ya que la consulta se analiza una sola vez y después solo se envían los parámetros.

Reducción en el ancho de banda del servidor de base de datos ya que solo se envían los parámetros de la consulta en cada interacción y no toda la consulta.

Minimizan el riesgo de ataques de inyección SQL

 

Ahora ya estas listo para usar estas sentencias en tu proyecto...

 


Juan Carlos G

Electrónica y diseño web

Durante años he desarrollado plataformas dedicadas al rastreo satelital y varios sitios web que se encuentran en la primera página de Google, y hoy quiero compartir contigo lo que se en tecnologías como Node JS, PHP, C# y Bases de datos, si quieres apoyarme sígueme en mis redes sociales y suscríbete a mi canal de YouTube.

Puedes seguirme en mis redes