Buscar en la base de conocimientos
< Todos los temas
Imprimir

Función para Ejecutar Consultas Preparadas

<?php
function ejecutarConsultaPreparada($conn, $sql, $parametros) {
    $stmt = $conn->prepare($sql);
    if ($stmt === false) {
        die("Error al preparar la consulta: " . $conn->error);
    }

    $tipos = '';
    foreach ($parametros as $parametro) {
        if (is_int($parametro)) {
            $tipos .= 'i'; // entero
        } elseif (is_float($parametro)) {
            $tipos .= 'd'; // doble
        } else {
            $tipos .= 's'; // cadena
        }
    }

    $stmt->bind_param($tipos, ...$parametros);
    $stmt->execute();

    $resultado = $stmt->get_result();
    $stmt->close();

    return $resultado;
}
?>

Parámetros de la Función:

  • Pasos de la Función:
    1. Preparación de la Consulta: Se utiliza $conn->prepare($sql) para preparar la consulta SQL. Si hay algún error, se muestra un mensaje de error y se termina la ejecución del script.
    2. Determinación de Tipos de Parámetros: La función recorre el array de parámetros ($parametros) para determinar el tipo de cada uno (entero, doble o cadena). Estos tipos se utilizan en la función bind_param más adelante.
    3. Asociación de Parámetros: Se utiliza $stmt->bind_param($tipos, ...$parametros) para asociar los parámetros a la consulta preparada. Los tres puntos (...) se utilizan para desempaquetar el array de parámetros.
    4. Ejecución de la Consulta: Se ejecuta la consulta preparada con $stmt->execute().
    5. Obtención de Resultados: Si la consulta devuelve resultados, se obtienen con $stmt->get_result(). Puedes adaptar esta parte según tus necesidades; por ejemplo, si esperas resultados diferentes, puedes ajustarla.
    6. Cierre del Statement: Se cierra el statement con $stmt->close() para liberar recursos.
    7. Retorno de Resultados: Finalmente, la función retorna el objeto de resultados.

Esta función proporciona una forma segura y eficiente de ejecutar consultas SQL en PHP, reduciendo el riesgo de inyección SQL al utilizar consultas preparadas y vinculación de parámetros.

Vamos a ver un ejemplo completo de cómo puedes utilizar la función ejecutarConsultaPreparada en un escenario práctico. Supongamos que tienes una tabla llamada usuarios con dos columnas: id y nombre.

Primero, establecemos la conexión a la base de datos:

<?php
$servername = "tu_servidor";
$username = "tu_usuario";
$password = "tu_contraseña";
$dbname = "tu_base_de_datos";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Conexión fallida: " . $conn->connect_error);
}
?>

Ahora, vamos a utilizar la función ejecutarConsultaPreparada para insertar un nuevo usuario en la tabla:

<?php
include 'funciones.php'; // Asegúrate de incluir el archivo que contiene la función

// Datos del nuevo usuario
$nombreNuevoUsuario = "John Doe";

// Consulta preparada para insertar un nuevo usuario
$sqlInsert = "INSERT INTO usuarios (nombre) VALUES (?)";

// Parámetros a vincular
$parametrosInsert = array($nombreNuevoUsuario);

// Llamada a la función para ejecutar la consulta preparada
$resultadoInsert = ejecutarConsultaPreparada($conn, $sqlInsert, $parametrosInsert);

if ($resultadoInsert === false) {
    echo "Error al insertar el nuevo usuario: " . $conn->error;
} else {
    echo "Nuevo usuario insertado correctamente.";
}
?>

En este ejemplo:

  • Hemos creado una consulta preparada para insertar un nuevo usuario en la tabla usuarios con un nombre específico.
  • Luego, hemos definido un array $parametrosInsert que contiene los valores de los parámetros que serán vinculados en la consulta preparada.
  • Finalmente, llamamos a la función ejecutarConsultaPreparada pasando la conexión, la consulta preparada, y los parámetros. El resultado se almacena en la variable $resultadoInsert.

Este es un ejemplo básico, y puedes adaptarlo según tus necesidades específicas. La función ejecutarConsultaPreparada te proporciona una forma segura y eficiente de ejecutar consultas preparadas en tu aplicación PHP.

Sidebar