Heim >Datenbank >MySQL-Tutorial >Wie kann ich effizient mehrere Zeilen in MySQLi einfügen und gleichzeitig SQL-Injection verhindern?

Wie kann ich effizient mehrere Zeilen in MySQLi einfügen und gleichzeitig SQL-Injection verhindern?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-24 17:09:11521Durchsuche

How Can I Efficiently Insert Multiple Rows into MySQLi While Preventing SQL Injection?

Effizientes Einfügen mehrerer Zeilen in MySQLi mit SQL-Injection-Mitigation

Das Einfügen einer großen Anzahl von Zeilen in eine MySQL-Datenbank mit PHP und MySQLi erfordert eine Technik, die sowohl sicher als auch effizient ist. Das Vermeiden von SQL-Injections bei der Verarbeitung eines solchen Datenvolumens kann eine Herausforderung sein.

Lösung

Um dieses Problem zu beheben, sollten Sie die Verwendung einer Transaktion zum Gruppieren der Einfügevorgänge in Betracht ziehen. Dieser Ansatz beinhaltet das Verschieben der Vorbereitungs- und Bindungsvorgänge außerhalb der Schleife, wie unten gezeigt:

$array = array("array", "with", "about", "2000", "values");
$query = "INSERT INTO table (link) VALUES (?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("s", $one);

$mysqli->query("START TRANSACTION");
foreach ($array as $one) {
    $stmt->execute();
}
$stmt->close();
$mysqli->query("COMMIT");

Vorteile der Transaktion

  • Erhöhte Geschwindigkeit: Das Ausführen von SQL-Abfragen innerhalb einer Transaktion reduziert den Overhead erheblich und verbessert die Leistung. Unsere Tests mit 10.000 Iterationen zeigten eine zweifache Geschwindigkeitssteigerung bei Verwendung einer Transaktion.
  • SQL-Injection-Mitigation: Transaktionen gruppieren eine Reihe von Vorgängen in einer einzigen atomaren Einheit und stellen so sicher, dass alle oder keine ausgeführt werden der Zeilen werden eingefügt. Dies verhindert teilweise Einfügungen und schützt vor SQL-Injection-Versuchen.

Implementierung

Denken Sie daran, die Abfragen START TRANSACTION und COMMIT außerhalb der PHP-Schleife auszuführen, um die Gesamtheit sicherzustellen Der Vorgang wird als einzelne Transaktion behandelt. Dieser Ansatz kombiniert die Sicherheit vorbereiteter Anweisungen mit der Effizienz von Masseneinfügungen und verringert gleichzeitig Stapelüberläufe.

Das obige ist der detaillierte Inhalt vonWie kann ich effizient mehrere Zeilen in MySQLi einfügen und gleichzeitig SQL-Injection verhindern?. 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