2012-04-25 97 views
0

我知道类似的问题已经被问到,我尝试了一堆(包括PHP文档),但我似乎没有得到这个工作。mysqli multi_query和insert_id让我的命令不同步;

我有以下几点:

$query = "insert into page title values ('v1');insert into page title values ('v2');insert into page title values ('v3');" 

$mysqlidb->multi_query($query); 

$index = 0; 
$insertId = $this->db->insert_id; 
for($i = $insertId; $i < $insertId + sizeof($pages); $i++) { 
    //store ids in some array 
} 

如果我执行上面的代码,不管是什么我尝试下在DB做我得到“命令不同步,你现在不能运行这个命令“错误。

我明白我必须关闭所有结果,问题是我不知道如何。

似乎有结果,因为$mysqli->more_results()返回true,但如果我然后调用use_result()或store_result()这些返回null。我试着在这之前并调用next_result后(),它总是空:

while($mysqli->more_results()) { 
    //next line returns error, calling close() on null: 
    $mysqli->use_result()->close(); 
    $mysqli->next_result(); 
} 

while($mysqli->more_results()) { 
    $mysqli->next_result(); 
    //next line returns error, calling close() on null: 
    $mysqli->use_result()->close(); 

} 

请帮帮忙,如何摆脱“命令不同步,你可以”现在执行这个命令“在执行multi_query插入并调用insert_id之后。谢谢。

回答

1
$values = ('v1' => '','v2' => '','v3' => ''); 
foreach ($values as $key => $val) { 
    $query = "insert into page title values ('$key')"; 
    $mysqlidb->query($query); 
    $values[$key] = $mysqlidb->insert_id; 
} 
+0

谢谢,但如果我用多个(单个)查询替换multi_query,它会不会影响性能? – 2012-04-25 15:25:33

+0

不是。它不会 – 2012-04-25 16:23:55

+0

正确的你,我试过你的解决方案,我会用这个。谢谢。 – 2012-04-26 10:51:16