Instruction préparée PHP pour les mises à jour de base de données
Cette discussion est centrée sur l'utilisation appropriée des instructions préparées en PHP pour éviter les vulnérabilités telles que les injections SQL. Le but du bloc de code en question est de mettre à jour une table de base de données avec un seul champ à l'aide d'une instruction préparée.
Dans le code fourni, la méthode update() dans le fichier class.Scripts.inc utilise une instruction préparée. instruction pour tenter de mettre à jour la table datadump. Cependant, l'exécution échoue en raison d'un ordre incorrect des paramètres lors de la méthode bind_param(). Le code actuel lie les paramètres dans l'ordre $id et $content, tandis que l'instruction SQL les attend dans l'ordre opposé, ce qui entraîne une identification incorrecte des enregistrements et aucune ligne affectée.
Le code corrigé ci-dessous corrige ce problème. erreur en liant les paramètres dans le bon ordre et en fournissant une gestion supplémentaire des erreurs :
$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);
Concernant vos demandes spécifiques :
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3