61-declaraciones preparadas en MySql con php

MySQL Declaraciones Preparadas

Declaraciones Preparadas en MySQL

Las declaraciones preparadas son una característica que permite ejecutar la misma consulta SQL repetidamente con diferentes valores de manera eficiente y segura.

El proceso de una declaración preparada consta de los siguientes pasos:

  • Preparación: Se envía la consulta SQL con parámetros marcados como "?" o con nombres como ":parametro".
  • Compilación: MySQL analiza y optimiza la consulta antes de ejecutarla.
  • Ejecución: Se asignan valores a los parámetros y se ejecuta la consulta.

Ventajas de las Declaraciones Preparadas

  • Protegen contra inyecciones SQL al separar la consulta de los datos.
  • Mejoran el rendimiento al reutilizar consultas.
  • Reducen el ancho de banda porque solo se envían los parámetros en cada ejecución.

Ejemplo (MySQLi con declaraciones preparadas)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

$datos = [
    ["John", "Doe", "john@example.com"],
    ["Mary", "Moe", "mary@example.com"],
    ["Julie", "Dooley", "julie@example.com"]
];

foreach ($datos as $fila) {
    list($firstname, $lastname, $email) = $fila;
    $stmt->execute();
}

echo "New records created successfully";

$stmt->close();
$conn->close();
?>

Ejemplo (PDO con declaraciones preparadas)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  
  $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (:firstname, :lastname, :email)");

  $datos = [
      ["John", "Doe", "john@example.com"],
      ["Mary", "Moe", "mary@example.com"],
      ["Julie", "Dooley", "julie@example.com"]
  ];
  
  foreach ($datos as $fila) {
      $stmt->bindParam(':firstname', $fila[0]);
      $stmt->bindParam(':lastname', $fila[1]);
      $stmt->bindParam(':email', $fila[2]);
      $stmt->execute();
  }
  
  echo "New records created successfully";
} catch(PDOException $e) {
  echo "Error: " . $e->getMessage();
}
$conn = null;
?>

Publicar un comentario

0 Comentarios