猿问

在mysqli中插入许多值的最佳方法?

我正在寻找一种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?
谢谢!


摇曳的蔷薇
浏览 540回答 3
3回答

至尊宝的传说

再试一次,我看不出为什么您的原始代码在进行较小的修改后就无法使用:$query&nbsp;=&nbsp;"INSERT&nbsp;INTO&nbsp;table&nbsp;(link)&nbsp;VALUES&nbsp;(?)";$stmt&nbsp;=&nbsp;$mysqli->prepare($query);$stmt->bind_param("s",&nbsp;$one);foreach&nbsp;($array&nbsp;as&nbsp;$one)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$stmt->execute();}$stmt->close();

动漫人物

是的,您可以手动构建一个大型查询,例如:$query&nbsp;=&nbsp;"";foreach&nbsp;($array&nbsp;as&nbsp;$curvalue)&nbsp;{ &nbsp;&nbsp;if&nbsp;($query) &nbsp;&nbsp;&nbsp;&nbsp;$query&nbsp;.=&nbsp;","; &nbsp;&nbsp;$query&nbsp;.=&nbsp;"('"&nbsp;.&nbsp;$mysqli->real_escape_string($curvalue)&nbsp;.&nbsp;"')";}if&nbsp;($query)&nbsp;{ &nbsp;&nbsp;$query&nbsp;=&nbsp;"INSERT&nbsp;INTO&nbsp;table&nbsp;(link)&nbsp;VALUES&nbsp;"&nbsp;.&nbsp;$query; &nbsp;&nbsp;$mysqli->query($query);}
随时随地看视频慕课网APP
我要回答