mysql_fetch_array
を呼び出すたびに クエリから次の行を取得します。そのwhile
mysql_fetch_array
の間、ループはtrueを返し続けます 変数$row2
に割り当てるものがまだ残っています 。行がなくなると、変数を与えるものがなくなり、falseが返されます。
ETA: あなたが言及した最後のビットに関しては、あなたの例のようにループの各反復で可変の増分を持つことができますが、それは完全に必要というわけではありません。 $var = mysql_num_rows($data)
のように実行すると、返された行数を確認することもできます。 while
の前 ループ。