Как правильно написать цикл while внутри while в PHP?
Всё потому, что вы используете одно и то же подключение к базе данных. Получается так:
1. Запрашиваются записи из db_news, база принимает этот запрос как текущий.
2. Читается первая запись текущего запроса, т.е. из db_news.
3. Через это же подключение запрашиваются записи из db_news_img. База запоминает новый запрос как текущий, готова передавать записи из db_news_img.
4. Читается первая запись текущего запроса, т.е. из db_news_img.
5. Возврат к началу цикла, хочется прочитать из db_news. Но этот запрос уже не является текущим, он "потерян", поэтому из него невозможно получить данные.
6. Данных нет - значит конец цикла.
Вам нужно запоминать и использовать указатель запроса, скорее всего так:$db_res1 = $db->Query("SELECT * FROM db_news WHERE cat_id = '$catid' ORDER BY id DESC");//
if($db_res1->NumRows() > 0){
       while($news = $db_res1->FetchArray()){
               $textfull = $news["news"];
                $db_res2 = $db->Query("SELECT * FROM db_news_img WHERE news_id = '$news[id]' ORDER BY id DESC");//
                if($db_res2->NumRows() > 0){
                        while($img = $db_res2->FetchArray()){
Всё потому, что вы используете одно и то же подключение к базе данных. Получается так:
1. Запрашиваются записи из db_news, база принимает этот запрос как текущий.
2. Читается первая запись текущего запроса, т.е. из db_news.
3. Через это же подключение запрашиваются записи из db_news_img. База запоминает новый запрос как текущий, готова передавать записи из db_news_img.
4. Читается первая запись текущего запроса, т.е. из db_news_img.
5. Возврат к началу цикла, хочется прочитать из db_news. Но этот запрос уже не является текущим, он "потерян", поэтому из него невозможно получить данные.
6. Данных нет - значит конец цикла.
Вам нужно запоминать и использовать указатель запроса, скорее всего так:$db_res1 = $db->Query("SELECT * FROM db_news WHERE cat_id = '$catid' ORDER BY id DESC");//
if($db_res1->NumRows() > 0){
       while($news = $db_res1->FetchArray()){
               $textfull = $news["news"];
                $db_res2 = $db->Query("SELECT * FROM db_news_img WHERE news_id = '$news[id]' ORDER BY id DESC");//
                if($db_res2->NumRows() > 0){
                        while($img = $db_res2->FetchArray()){