Cluster... yo pensaba igual que tú. Pero cards me hizo ver algo que yo no sabía respecto al bucle for. Luego revisé el manual y lo confirmé.
Te invito a que veas en el manual y veas que no es necesario el mysql_num_rows(). O sea que no es necesario conocer de "antemano" el número de iteraciones que se ejecutarán.. simplemente quedaría así por ejemplo:
Código PHP:
$sql="SELECT * FROM tabla WHERE dato='dato'";
$result=mysql_query($sql);
//Acá normalmente hemos venido utilizando el while.
//Ahora en su lugar utilizamos el for
//Pues en cada iteración se evalúa el segundo parámetro del for.
//Si es TRUE, entonces se ejecuta otra iteración.(Igual que en el while).
// entonces basta con esto:
for ($i = 0; $row=mysql_fetch_array($result); $i++){
echo $row['id'];
}
//Entonces en una sola consulta obtenemos los registros
// y en $i estará el total de registros sin mysql_num_rows()...
Bueno... no sé si será óptimo, pero es una alternativa.
Saludos