我必须插入数千条记录。
我在循环中使用msqli::multi_query()
并且想要n查询的'multi_query'块(其中'n'是参数)。
第一次INSERT没问题,第二次出错了,因为我必须像这样管理结果:
while($mysqli->more_results())
{
$mysqli->next_result();
if($res = $mysqli->store_result()) // added closing bracket
{
$res->free();
}
}
问题是这个问题很慢。
问题是:如何优化此批量INSERT,以便更快地管理结果?
答案 0 :(得分:0)
如果要插入一个表,只需在INSERT中使用批量模式
例如:
INSERT INTO TABLE (field1,field2,field3) VALUES (value1,value2,value3),(value4,value5,value6)
在php中使用for
或foreach
进行查询,然后只使用mysqli_query
。根据您在评论部分中提到的错误判断,您违反了限制,这意味着您尝试两次插入相同的值。
如果要插入不同的表,则可以使用multi_query
界面。
准备一个查询Insert1;Insert2;
并使用像这样的multi_query
$con->multi_query($query);
while (mysqli_more_results($con)) {
mysqli_use_result($con);
mysqli_next_result($con);
}