Посмотрите на:
http://php.net/manual/en/function.mysql-fetch-array.php
В примере:
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result)) {
printf("ID: %s Name: %s", $row[0], $row[1]);
}
mysql_fetch_array получает массив из следующей строки ИЛИ false, если ее нетleft.
$ row = $ result создаст бесконечный цикл, когда $ result - это все, что не приведено к значению false
ДОПОЛНИТЕЛЬНО
вы можете использовать mysql_num_rows [http://php.net/manual/en/function.mysql-num-rows.php], чтобы проверить, возвращены ли нулевые результаты:
$result = mysql_query("SELECT id, name FROM mytable");
if(mysql_num_rows($result) {
while ($row = mysql_fetch_array($result)) {
printf("ID: %s Name: %s", $row[0], $row[1]);
}
} else {
// NO ROWS RETURNED
}