Declaración preparada en PHP para actualizaciones de bases de datos
Esta discusión se centra en la utilización adecuada de declaraciones preparadas en PHP para evitar vulnerabilidades como las inyecciones de SQL. El propósito del bloque de código en cuestión es actualizar una tabla de base de datos con un solo campo usando una declaración preparada.
En el código proporcionado, el método update() en el archivo class.Scripts.inc emplea un código preparado declaración en un intento de actualizar la tabla de volcado de datos. Sin embargo, la ejecución no tiene éxito debido a un orden de parámetros incorrecto durante el método bind_param(). El código actual vincula los parámetros en el orden de $id y $content, mientras que la instrucción SQL los espera en el orden opuesto, lo que lleva a una identificación de registro incorrecta y a que no se afecten filas.
El código corregido a continuación rectifica esto error al vincular los parámetros en el orden correcto y proporcionar un manejo de errores adicional:
$stmt = $this->mysqli->prepare("UPDATE datadump SET content=? WHERE id=?");
/* Always check whether the prepare() succeeded */
if ($stmt === false) {
trigger_error($this->mysqli->error, E_USER_ERROR);
return;
}
$id = 1;
/* Bind our params */
/* Bind variables in the same order as SQL params */
$stmt->bind_param('si', $content, $id);
/* Set our params */
/* No escaping needed when using prepared statements */
$content = $_POST['content'] ?: '';
/* Execute the prepared Statement */
$status = $stmt->execute();
/* Always check whether the execute() succeeded */
if ($status === false) {
trigger_error($stmt->error, E_USER_ERROR);
}
printf("%d Row inserted.\n", $stmt->affected_rows);
Con respecto a sus consultas específicas:
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3