Heim >Backend-Entwicklung >PHP-Tutorial >Wie verwende ich PHP-vorbereitete Anweisungen für sichere Datenbankaktualisierungen?

Wie verwende ich PHP-vorbereitete Anweisungen für sichere Datenbankaktualisierungen?

Susan Sarandon
Susan SarandonOriginal
2024-10-21 19:58:29266Durchsuche

How to Use PHP Prepared Statements for Secure Database Updates?

PHP-vorbereitete Anweisungen für sichere Datenbankaktualisierungen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn