MySqli多个查询如何更快地处理结果

时间:2015-04-29 14:00:15

标签: php mysql mysqli

我必须插入数千条记录。 我在循环中使用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,以便更快地管理结果?

1 个答案:

答案 0 :(得分:0)

如果要插入一个表,只需在INSERT中使用批量模式 例如:
INSERT INTO TABLE (field1,field2,field3) VALUES (value1,value2,value3),(value4,value5,value6)

在php中使用forforeach进行查询,然后只使用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);
    }