Por que no haces directamente un if sobre la asignación de $row?; No digo que sea el problema, pero es lo mejor:
Código PHP:
if( $row = mysql_fetch_array($resultado) ){
....
}
Y en cuanto a tu problema...
El el código original: Estas asignado, iterando y no se que más siempre sobre el mismo resource...Si vas a mover el puntero (o esperas eso) usá mysql_data_seek().
En el segundo código: no veo donde haces un simple echo, solo estas asignando valores a dos sessions. Hace lo mismo, si es uno un if sobre la asignación, si son varios un while directamente.