¿Cómo crear y ejecutar sentencias preparadas (Prepared Statement) en MySQL con PHP?

Bien venido a este nueva clase de este curso gratuito de PHP con MySQL, en esta ocasión veremos un tema muy importante y que ocuparas mucho en la práctica, hoy veremos el tema de sentencias preparadas (Prepared Statement) en MySQL y las ejecutaremos desde PHP.

El objetivo es que al finalizar comprendas para que sirven las sentencias preparadas y aprendas a utilizarlas desde PHP, sin más comencemos.

Juan Carlos García
by Juan Carlos García24-Ag-20222

¿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.

 

¿Qué 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 aprender.

 

¿Qué son las sentencias preparadas?

Una sentencia preparada (Prepared Statements ) o sentencias parametrizadas es una plantilla de un query o consulta que deseamos ejecutar repetidamente una gran cantidad de veces de forma eficiente.

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

 

¿Cómo 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

 

¿Cómo 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.

Suscribirme

Gracias por tu calificación:

2

Categorías


  • EWebik
  • React JS
  • SQL
  • Base de datos
  • PHP - MySQL
  • Página Web
  • Servidores
  • Flexbox
  • NodeJS
  • WordPress
  • POO

🥇 Creación de páginas web

⚡️ Quiero mi página web 💪🏼

 

¿Cómo 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

  1. Ahorro de tiempo de procesamiento ya que la consulta se analiza una sola vez y después solo se envían los parámetros.
  2. 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.
  3. Minimizan el riesgo de ataques de inyección SQL

 

Muy bien hecho, ahora ya estas listo para usar estas sentencias en tu proyecto, recuerda repasar las clases anteriores para tener cada concepto presente, nos vemos en la siguiente clase.

Suscribirme

Gracias por tu calificación:

2

Categorías


  • EWebik
  • React JS
  • SQL
  • Base de datos
  • PHP - MySQL
  • Página Web
  • Servidores
  • Flexbox
  • NodeJS
  • WordPress
  • POO

🥇 Creación de páginas web

⚡️ Quiero mi página web 💪🏼

🧐 Autoevaluación: Sentencias Preparadas MySQL PHP

1 ¿Qué son las sentencias preparadas en PHP?

2 ¿Qué es BIND param?

Juan Carlos García

Juan Carlos García

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.

Desarrollador de software

© 2022 EWebik

Diseño de páginas web y aplicaciones moviles.