我必须插入数千条记录。
我在一个循环中使用 msqli::multi_query()
并想要“multi_query” block 的 n 查询(其中“n”是一个参数)。
第一个 INSERT 正常,第二个出错,因为我必须像这样管理结果:
while($mysqli->more_results())
{
$mysqli->next_result();
if($res = $mysqli->store_result()) // added closing bracket
{
$res->free();
}
}
问题是这个 chek 很慢。
问题是:我如何优化这个批量 INSERT 以更快地管理结果?
最佳答案
如果您要在一个表中插入,只需在 INSERT 中使用 batch mod。
示例:
INSERT INTO TABLE (field1,field2,field3) VALUES (value1,value2,value3),(value4,value5,value6)
在 php 中使用 for
或 foreach
进行查询,然后只需使用 mysqli_query
。根据您在评论部分提到的错误判断,您违反了 ket 限制,这意味着您试图两次插入相同的值。
如果你在不同的表中插入,你可以使用multi_query
接口(interface)。
准备一个查询 Insert1;Insert2;
并像这样使用 multi_query
$con->multi_query($query);
while (mysqli_more_results($con)) {
mysqli_use_result($con);
mysqli_next_result($con);
}
关于php - MySqli 多个查询如何更快地处理结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29946015/