Vermeidung von SQL-Injections
Bei der Ausführung von Datenbankabfragen sind vorbereitete Anweisungen von entscheidender Bedeutung Verhindern Sie SQL-Injections. Sie ermöglichen es Ihnen, Daten dynamisch in Abfragen einzufügen, ohne die Sicherheit zu beeinträchtigen.
Ein einzelnes Feld aktualisieren
In Ihrem Code-Snippet aktualisieren Sie nur ein Feld: Inhalt. Dies ist akzeptabel, da Sie einzelne Spalten in einer UPDATE-Anweisung selektiv aktualisieren können.
Richtige Parameterbindung
Um Parameter in einer vorbereiteten Anweisung ordnungsgemäß zu binden, muss dies unbedingt sichergestellt werden Die Datentypen in Ihrem Code stimmen mit den Datentypen in Ihrer MySQL-Anweisung überein. In Ihrem Fall haben Sie:
<code class="php">$stmt = $this->mysqli->prepare("UPDATE datadump SET content=? WHERE id=?"); $stmt->bind_param('is', $id, $content);</code>
Das „is“ in der bind_param()-Methode gibt an, dass Sie eine Ganzzahl (i) und eine Zeichenfolge (s) binden. Tatsächlich verwenden Sie jedoch den folgenden Code, um die Inhaltsvariable festzulegen:
<code class="php">$content = isset($_POST['content']) ? $this->mysqli->real_escape_string($_POST['content']) : '';</code>
Der eine Zeichenfolge zurückgibt. Diese Nichtübereinstimmung kann zu Fehlern führen.
Korrekturen:
Um das Problem zu beheben, nehmen Sie die folgenden Änderungen vor:
<code class="php">if ($stmt === false) { trigger_error($this->mysqli->error, E_USER_ERROR); return; } $content = $_POST['content'] ?: ''; $stmt->bind_param('si', $content, $id); ```` **Additional Notes:** * Always remember to check for statement preparation errors using `if ($stmt === false)`. * Bind your parameters in the same order as they appear in your SQL statement. **Troubleshooting:** If you're still facing issues, ensure that: * Your MySQL connection is established correctly. * The table and column names in your statement are spelled correctly.</code>
Das obige ist der detaillierte Inhalt vonWie verwende ich PHP-vorbereitete Anweisungen für sichere Datenbankaktualisierungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!