我正在寻找一种SQL注入安全技术,用PHP和MySQLi一次插入大量行(约2000).
我有一个包含所有必须包含的值的数组.目前我正在这样做:
<?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();
}
?>
Run Code Online (Sandbox Code Playgroud)
我尝试了call_user_func_array(),但它导致了stackoverflow.
有什么更快的方法可以做到这一点(比如一次插入所有这些?),但仍然可以防止SQL注入(如预处理语句)和stackoverflows?
谢谢!
希望有人能在这里给我一些见解.
当必须一次向表中插入多行时,我使用的sql看起来像这样:
INSERT INTO some_names (firstName, lastName) VALUES ('Joe', 'Smith'),('Fred','Sampson'),('Lisa','Pearce')
正如您所看到的,我正在插入三行一个语句.我这样做的原因是我认为它比执行三个不同的语句来插入行更有效.
所以我的问题是:如果我希望能够将我的值绑定到语句,我该怎么做?不幸的是,我一直在寻找网络,我只能找到以下形式的单一陈述的例子:
$stmt = $mysqli->prepare("INSERT INTO some_names (firstName, lastName) VALUES (?, ?)");
$stmt->bind_param('ss', $firstName, $lastName);
$firstName = "Joe";
$lastName = "Smith";
$stmt->execute();
$firstName = "Fred";
$lastName = "Sampson";
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)
看起来这相当于执行单独的INSERT语句并且似乎效率较低.
所以我的问题是:有没有办法在多插入语句中绑定?请教我这里!谢谢