Der beste Weg zum Batch-Einfügen in MySQL?
P粉951914381
2023-08-24 21:16:22
<p>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.
</p><p>Ich habe ein Array, das alle Werte enthält, die es enthalten muss.
Momentan mache ich Folgendes: </p>
<pre class="brush:php;toolbar:false;"><?php
$array = array("array", "with", "about", "2000", "values");
foreach ($array als $one)
{
$query = "INSERT INTO table (link) VALUES (?)";
$stmt = $mysqli->prepare($query);
$stmt ->bind_param("s", $one);
$stmt->execute();
$stmt->close();
}
?></pre>
<p>Ich habe call_user_func_array() ausprobiert, aber es führte zu einem Stapelüberlauf. </p>
<p>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>
再试一次,我不明白为什么您的原始代码在稍作修改后就无法工作:
通过将插入内容放入事务中,您应该能够大大提高速度。您还可以将准备和绑定语句移到循环之外。
我在我的网络服务器上测试了此代码 10,000 次迭代。
没有事务:
226 秒。
交易时间:2 秒。
或者速度提高两个数量级
,至少对于该测试而言。