PHP-vorbereitete Anweisung für Datenbankaktualisierungen
Diese Diskussion dreht sich um die ordnungsgemäße Verwendung vorbereiteter Anweisungen in PHP, um Schwachstellen wie SQL-Injections zu verhindern. Der Zweck des betreffenden Codeblocks besteht darin, eine Datenbanktabelle mit einem einzelnen Feld mithilfe einer vorbereiteten Anweisung zu aktualisieren.
Im bereitgestellten Code verwendet die Methode update() in der Datei class.Scripts.inc eine vorbereitete Anweisung -Anweisung in einem Versuch, die Datadump-Tabelle zu aktualisieren. Die Ausführung ist jedoch aufgrund einer falschen Parameterreihenfolge während der Methode bind_param() nicht erfolgreich. Der aktuelle Code bindet die Parameter in der Reihenfolge von $id und $content, während die SQL-Anweisung sie in der umgekehrten Reihenfolge erwartet, was zu einer falschen Datensatzidentifizierung führt und null Zeilen betrifft.
Der unten korrigierte Code behebt dies Fehler, indem die Parameter in der richtigen Reihenfolge gebunden und zusätzliche Fehlerbehandlung bereitgestellt werden:
$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);
Bezüglich Ihrer spezifischen Anfragen:
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3