微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP嵌套While循环不适用于mysql_fetch_assoc

我测试了循环嵌套的While语句,以便:

$count1 = 0;

while ($count1 < 3) {
 $count1++;
 $count2 = 0;
 echo "count1: ".$count1."<br />";

    while ($count2 < 3) {
    $count2++;
    echo "count2: ".$count2."<br />";
    }
}

效果完美(每次循环三遍),结果如下:

count1: 1
 count2: 1
 count2: 2
 count2: 3
count1: 2
 count2: 1
 count2: 2
 count2: 3
count1: 3
 count2: 1
 count2: 2
 count2: 3

然后我尝试使用MysqL_fetch_assoc($ContactsInterests是两行关联数组,而$LatestNews有50行)循环进行同样的操作,即

$CI_count = 0;

while ($CI_Row = MysqL_fetch_assoc($ContactsInterests)) { //loop thru interests
$CI_count++;
$LN_count = 0;
echo "CI_count: ".$CI_count."<br />";

while ($LN_Row = MysqL_fetch_assoc($LatestNews)) { //loop thru news
    $LN_count++;
    echo "LN_count: ".$LN_count."<br />";

}
}

结果是:

CI_count: 1
 LN_count: 1
 LN_count: 2
 ...
 LN_count: 50
 LN_count: 51
CI_count: 2

但是LN_count的第二次迭代在哪里?我不明白为什么LN_count没有第二次增加.

帮助表示赞赏.

解决方法:

mysql_fetch_assoc对“ MysqL结果”类型进行迭代.寻求每个提取的索引.
您必须使用mysql_data_seek来获得第一个结果,例如;

<?PHP

    $CI_count = 0;

    while ($CI_Row = MysqL_fetch_assoc($ContactsInterests)) { //loop thru interests
        $CI_count++;
        $LN_count = 0;
        echo "CI_count: ".$CI_count."<br />";

        MysqL_data_seek($LatestNews,0);
        while ($LN_Row = MysqL_fetch_assoc($LatestNews)) { //loop thru news
            $LN_count++;
            echo "LN_count: ".$LN_count."<br />";

        }
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐