Heim >Datenbank >MySQL-Tutorial >Wie können vorbereitete Anweisungen die Sicherheit und Leistung in PHP UPDATE-Abfragen verbessern?

Wie können vorbereitete Anweisungen die Sicherheit und Leistung in PHP UPDATE-Abfragen verbessern?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-29 16:29:02912Durchsuche

How can prepared statements enhance security and performance in PHP UPDATE queries?

Vorbereitete Anweisungen für Aktualisierungsabfragen

In PHP ist die Vorbereitung von Anweisungen für die Verbesserung der Abfragesicherheit und -leistung von entscheidender Bedeutung. Vorbereitete Anweisungen ermöglichen parametrisierte Abfragen, bei denen Platzhalter (?) anstelle der direkten Variableneinfügung verwendet werden.

Beispiel für UPDATE-Abfragen

Betrachten Sie die folgende MySQLi-Abfrage, die Daten aktualisiert in der Bewerbertabelle:

$db_usag->query("UPDATE Applicant SET phone_number ='$phone_number', 
street_name='$street_name', city='$city', county='$county', zip_code='$zip_code', day_date='$day_date', month_date='$month_date',
 year_date='$year_date' WHERE account_id='$account_id'");

Um diese Anweisung vorzubereiten, ersetzen Sie alle Variablenzuweisungen durch Platzhalter:

<code class="php">$sql = "UPDATE Applicant SET phone_number=?, street_name=?, city=?, county=?, 
zip_code=?, day_date=?, month_date=?, year_date=? WHERE account_id=?";</code>

Als nächstes initialisieren Sie ein vorbereitetes Anweisungsobjekt:

<code class="php">$stmt = $db_usag->prepare($sql);</code>

Binden Sie Parameter mit der Methode bind_param() an die Anweisung. Geben Sie die Datentypen der Parameter entsprechend an:

<code class="php">// Assuming the date and account_id parameters are integers `d` and the rest are strings `s`
$stmt->bind_param('sssssdddd', $phone_number, $street_name, $city, $county, 
$zip_code, $day_date, $month_date, $year_date, $account_id);</code>

Führen Sie die vorbereitete Anweisung aus:

<code class="php">$stmt->execute();</code>

Überprüfen Sie, ob Fehler vorliegen:

<code class="php">if ($stmt->error) {
    echo "FAILURE!!! " . $stmt->error;
}</code>

Wenn die Ausführung erfolgreich war Erfolgreich, rufen Sie die Anzahl der betroffenen Zeilen ab:

<code class="php">echo "Updated {$stmt->affected_rows} rows";</code>

Schließen Sie abschließend das Anweisungsobjekt:

<code class="php">$stmt->close();</code>

Durch die Verwendung vorbereiteter Anweisungen können Sie potenzielle Injektionsangriffe vermeiden und die Effizienz von verbessern Ihre Datenbankabfragen.

Das obige ist der detaillierte Inhalt vonWie können vorbereitete Anweisungen die Sicherheit und Leistung in PHP UPDATE-Abfragen verbessern?. 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