我正在寻找一种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();}?>我尝试了call_user_func_array(),但是它引起了stackoverflow。什么是更快的方法(例如一次将它们全部插入?),但是仍然可以防止SQL注入(如准备好的语句)和stackoverflows?谢谢!
3 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
再试一次,我看不出为什么您的原始代码在进行较小的修改后就无法使用:
$query = "INSERT INTO table (link) VALUES (?)";$stmt = $mysqli->prepare($query);$stmt->bind_param("s", $one);foreach ($array as $one) { $stmt->execute();}$stmt->close();
动漫人物
TA贡献1815条经验 获得超10个赞
是的,您可以手动构建一个大型查询,例如:
$query = "";foreach ($array as $curvalue) { if ($query) $query .= ","; $query .= "('" . $mysqli->real_escape_string($curvalue) . "')";}if ($query) { $query = "INSERT INTO table (link) VALUES " . $query; $mysqli->query($query);}
添加回答
举报
0/150
提交
取消