在我的php代码中,我使用了一个while循环,如下所示。
<?php
$connection=mysqli_connect("localhost","root","","entries");
$query1="select * from jobs";
$query1exe=mysqli_query($connection,$query1);
$loopcount=0;
while($query1collector=mysqli_fetch_array($query1exe,MYSQLI_ASSOC)) {
$query2="insert into learning set name='new_1';
insert into learning set name='new_2';";
mysqli_multi_query($connection,$query2);
$loopcount++;
}
echo($loopcount);
?>
在这段代码中,我得到输出为104($ loopcount),这意味着循环执行了104次。但在我的名为Learning的表中,我只有两个新条目new_1和new_2。我预计会有208个新条目(new_1 104次,new_2 104次)。为什么我没有得到预期的结果。
我正在使用PHP版本5.5.11
P.S我想使用mysqli_multi_query本身,因为我需要同时执行一些查询。
这是我在三次执行代码时学习表的样子
--------------------------------------------------------
slno | name | city | Phone
--------------------------------------------------------
1 | sandeep | NULL | NULL
-------------------------------------------------------
2 | new_1 | NULL | NULL
-------------------------------------------------------
3 | new_2 | NULL | NULL
-------------------------------------------------------
4 | new_1 | NULL | NULL
-------------------------------------------------------
5 | new_2 | NULL | NULL
------------------------------------------------------
6 | new_1 | NULL | NULL
------------------------------------------------------
7 | new_2 | NULL | NULL
-------------------------------------------------------
答案 0 :(得分:2)
我在官方文档here上观看并找到了用户评论
如果混合$ mysqli-&gt; multi_query和$ mysqli-&gt;查询,后者将不会被执行!
仅使用mysqli_query
,将多个查询拆分为:
mysqli_query($connection,"insert into learning set name='new_1'");
mysqli_query($connection,"insert into learning set name='new_2'");
答案 1 :(得分:2)
我认为在开始另一个多查询之前,您可能需要获取两个查询的结果。
while($query1collector=mysqli_fetch_array($query1exe,MYSQLI_ASSOC)) {
$query2="insert into learning set name='new_1';
insert into learning set name='new_2';";
mysqli_multi_query($connection,$query2) or die('insert new_1 error: ' . mysqli_error($connection));
mysqli_next_result($connection) or die('insert new_2 error: ' . mysqli_error($connection));
$loopcount++;
}