コーディングしていると、2重ループのスクリプトを書くケースが出てきます。
今回、このケースで少し躓いたので覚書しておきます。
結論を言うと、外側のループと内側のループでは、処理に違う変数を使うこと。
当たり前のことですが、外側と内側で同じ変数を使うと2重ループとして処理されず、おかしな挙動になります。
ちなみに、この場合は、構文エラーではないので、エラーメッセージが出ず不具合の原因がわかりにくくなっています。
具体例を出すと下のような構文です。
while($row = mysql_fetch_assoc($res1)) { while($row = mysql_fetch_assoc($res2)){ echo $row["sample"] ; } }
外と内のループで同じ変数$rowで結果を受けています。
この場合には、二重ループとして処理されず、期待通りの結果になりません。
$row を、$row1、$row2などと区別してやる必要があります。
先にも述べましたが、このケースでは、エラーが出ないので間違いが分かりにくくなっています。
単純なケアレスミスですが、一応、覚書しときます。