Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich 2000 Zeilen effizient in MySQL einfügen und gleichzeitig SQL-Injection und Stack-Überlauf verhindern?

Wie kann ich 2000 Zeilen effizient in MySQL einfügen und gleichzeitig SQL-Injection und Stack-Überlauf verhindern?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-13 10:23:10607Durchsuche

How Can I Efficiently Insert 2000 Rows into MySQL While Preventing SQL Injection and Stack Overflow?

Effiziente Masseneinfügung in mysqli: SQL-Injection und Stapelüberläufe verhindern

Das sichere und performante Einfügen großer Datenmengen in eine MySQL-Datenbank ist für viele Anwendungen von entscheidender Bedeutung. In dieser Frage werden Techniken zum effektiven Einfügen von 2000 Zeilen untersucht und gleichzeitig der SQL-Injection-Schutz gewährleistet.

Das bereitgestellte Code-Snippet durchläuft ein Array von Werten und bereitet für jede Einfügung eine separate Abfrage vor und führt sie aus. Dieser Ansatz ist zwar sicher gegen SQL-Injections, kann jedoch ineffizient sein und zu Stapelüberläufen führen.

Erweiterte Lösung mit Transaktionen:

Eine optimalere Lösung beinhaltet die Verwendung von MySQL-Transaktionen. Durch die Gruppierung der Einfügungen innerhalb einer einzelnen Transaktion kann die Datenbank den Prozess optimieren und die Ausführungszeit erheblich reduzieren.

$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");

Leistungsvergleich:

Diese Technik bietet eine erhebliche Geschwindigkeitsverbesserung, wie durch Benchmark-Tests gezeigt:

  • Ohne Transaktion: 226 Sekunden
  • Mit Transaktion: 2 Sekunden

Dies stellt eine beeindruckende Geschwindigkeitssteigerung um zwei Größenordnungen für den Testfall dar.

Durch die Nutzung von Transaktionen können Sie Daten effizient in großen Mengen einfügen und gleichzeitig die SQL-Injection-Sicherheit aufrechterhalten und vermeiden Stapelüberläufe.

Das obige ist der detaillierte Inhalt vonWie kann ich 2000 Zeilen effizient in MySQL einfügen und gleichzeitig SQL-Injection und Stack-Überlauf 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