2015-12-14 3 views
0

Привет вот мой код:Две петли внутри друг друга не работает

while ($row = mysql_fetch_array($res)){ 
    echo "<br>looped firist loop <br>"; 

    while ($row2 = mysql_fetch_array($res2)){ 
     echo "<br>looped second loop <br>"; 

    } 

} 

отображает

петельных firist петли

петельными вторую петлю

зацикленных второй петлю

петлевая петля петли

петлевая петля петли

Проблема в том, что во втором цикле она проходит до тех пор, пока массив не закончит. Затем во второй раз, когда вызывается первый цикл, он не начинается с начала массива. Таким образом, цикл уже достиг своего максимума. В чем проблема и как ее решить?

+0

Что такое правильный результат, который вы хотите? –

+0

Какой бы запрос вы ни пишете, в соответствии с ним будет отображаться только вывод. –

+0

Я решил это, добавив mysql_data_seek ($ res2, 0); после второго цикла. – kma1994

ответ

1

Вам нужно сбросить указатель Resultset обратно к началу $res2 с помощью mysql_data_seek() если вы хотите перебрать него во второй раз:

while ($row = mysql_fetch_array($res)){ 
    echo "<br>looped firist loop <br>"; 

    mysql_data_seek($res2, 0); 

    while ($row2 = mysql_fetch_array($res2)){ 
     echo "<br>looped second loop <br>"; 

    } 

} 

Но расширение MySQL является старым и устаревшим, и уже существует нет в последней версии PHP, поэтому, пожалуйста, перейти в 21-м веке и начать использовать MySQLi или PDO

Уплотненный зацикливания также безнадежно неэффективно, и, вероятно, более эффективные методы, чтобы достичь того, что вы хотите

Смежные вопросы