Php 使用嵌套while语句时,外部while是否会影响内部while
我正在使用php和mysqli从mysql中提取一些数据,我很惊讶这段代码能够正常工作Php 使用嵌套while语句时,外部while是否会影响内部while,php,Php,我正在使用php和mysqli从mysql中提取一些数据,我很惊讶这段代码能够正常工作 <?php $mysqli = new mysqli("localhost", "root", "", "test"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $result = $my
<?php
$mysqli = new mysqli("localhost", "root", "", "test");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$result = $mysqli->query("select subscriber_number from r4_subscriber_choices");
/*
500 Records Here
*/
$ac = 'acc';
$i = 0;
while($row = $result->fetch_array())
{
$n = $row['subscriber_number'];
//echo $i++ . ' ' .$row['subscriber_number'] . '<br/>';
$new_q = $mysqli->query("select text_message from incoming_sms where dest_msisdn = $n and text_message like '%acc%'");
while($row2 = $new_q->fetch_array()){
echo $i++ . ' ' .$row2['text_message'] . '<br/>';
}
}
$result->close()
?>
外部while循环500条记录,而内部循环57条。在我看来,我期望内部循环也循环500次,因为它在外部循环中循环500次,但只循环57次
有人能解释一下为什么会这样吗?也许第二个while并不总是有结果。如果$new\u q没有结果或查询无效,则第二次执行的回显不会执行。否,它不会运行57次。它运行的次数与外部循环相同。只是你的回音在第二个循环中,这个循环只有57条外部记录的行。试试这个
while($row2 = $new_q->fetch_array()){
// echo $i++ . ' ' .$row2['text_message'] . '<br/>';
}
echo $i++;
对于内部查询返回0行的外部循环的所有行,您看不到回音,因为回音仅在内部循环也有行时执行。就是这样。尝试在内部循环外使用一个虚拟回显,您将看到内部查询执行了同样多的次数
如果您的第一个查询中有500个结果,那么显然您的外部循环将迭代500次。你已经知道了。将为内部查询返回尽可能多的记录的内部循环。内部循环的启动和停止次数至少与外部循环相同
比如说。如果外部查询中有500行,并且500个内部查询中的每个查询都有50条记录,那么内部循环将一起迭代25000次。直接在sql中执行查询,并检查它返回多少结果。内部/外部循环并不重要,它取决于结果的记录集。另外,在内部使用$j,与外部不同这不是一个真正的答案,更多的是一个评论。。。也许这只是猜测。尽量提供更多信息