@serbinyo

Почему цикл DO WHILE работает, а цикл WHILE — нет с функцией mysql_fetch_array()?

Есть база данных MySQL
$result = mysql_query ('SELECT * FROM cars WHERE kuzov="универсал" AND year="2007"',$db);
$row = mysql_fetch_array ($result);


Объясните, пожалуйста, почему цикл DO WHILE работает

do 
	{
		echo " <p>Автомобиль - $row[auto]<br/> Кузов - $row[kuzov]<br/> Год выпуска - $row[year]<br/> Пробег машины - $row[probeg];</p> ";
	}
	while ($row = mysql_fetch_array ($result));


А цикл WHILE нет

while ($row = mysql_fetch_array ($result))
	{	
		echo " <p>Автомобиль - $row[auto]<br/> Кузов - $row[kuzov]<br/> Год выпуска - $row[year]<br/> Пробег машины - $row[probeg];</p> ";	
	}
  • Вопрос задан
  • 2687 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Могу предположить, что результат запроса - одна строка. В случае WHILE Вы начинаете вывод со второй строки, поскольку условие с запросом следующей строки вычисляется и проверяется до начала исполнения тела цикла, а первая строка у Вас запрашивается до начала цикла и не используется.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Если уж так хочется использовать while, сделай так:
$result = mysql_query ('SELECT * FROM cars WHERE kuzov="универсал" AND year="2007"',$db);
$row = mysql_fetch_array ($result);

$i = 0;

while ( $row[$i] )
	{	
		echo " <p>Автомобиль - $row[$i][auto]<br/> Кузов - $row[$i][kuzov]<br/> Год выпуска - $row[$i][year]<br/> Пробег машины - $row[$i][probeg];</p> ";
$i++;	
	}

и все заработает. Но лучше так не делай, сделай через foreach:
$result = mysql_query ('SELECT * FROM cars WHERE kuzov="универсал" AND year="2007"',$db);
$rows = mysql_fetch_array ($result);

foreach ( $rows as $row )
	{	
		echo " <p>Автомобиль - $row[auto]<br/> Кузов - $row[kuzov]<br/> Год выпуска - $row[year]<br/> Пробег машины - $row[probeg];</p> ";
	}

Так будет по удачнее
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы