国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Was ist der effizienteste Weg, mehrere Werte in MySQL EINZUFüGEN?
P粉908138620
P粉908138620 2023-10-21 14:39:48
0
2
872

Ich suche nach einer sicheren SQL-Injection-Technik, um mit PHP und MySQLi eine gro?e Anzahl von Zeilen (~2000 Zeilen) auf einmal einzufügen.

Ich habe ein Array, das alle Werte enth?lt, die es enthalten muss. Momentan mache ich das:

<?php
$array = array("array", "with", "about", "2000", "values");

foreach ($array as $one) 
{
    $query = "INSERT INTO table (link) VALUES ( ?)";
    $stmt = $mysqli->prepare($query);
    $stmt ->bind_param("s", $one);
    $stmt->execute();
    $stmt->close();
}
?>

Ich habe call_user_func_array() ausprobiert, aber es führte zu einem Stapelüberlauf.

Was ist eine schnellere M?glichkeit, dies zu tun (z. B. alle auf einmal einzufügen?), aber dennoch SQL-Injection (z. B. vorbereitete Anweisungen) und Stapelüberlauf zu verhindern?

P粉908138620
P粉908138620

Antworte allen(2)
P粉250422045

再試一次,我不明白為什么您的原始代碼在稍作修改后就無法工作:

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

foreach ($array as $one) {
    $stmt->execute();
}
$stmt->close();
P粉785957729

通過將插入內(nèi)容放入事務(wù)中,您應(yīng)該能夠大大提高速度。您還可以將準(zhǔn)備和綁定語句移到循環(huán)之外。

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

我在我的網(wǎng)絡(luò)服務(wù)器上測試了此代碼 10,000 次迭代。

沒有事務(wù):226 秒。 交易時(shí)間:2 秒。 或者速度提高兩個(gè)數(shù)量級,至少對于該測試而言。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage