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:
- 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. - 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ónbind_param
más adelante. - 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. - Ejecución de la Consulta: Se ejecuta la consulta preparada con
$stmt->execute()
. - 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. - Cierre del Statement: Se cierra el statement con
$stmt->close()
para liberar recursos. - Retorno de Resultados: Finalmente, la función retorna el objeto de resultados.
- Preparación de la Consulta: Se utiliza
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.