Me sorprende que "funcione" porque básicamente estás cometiendo un error conceptual ahí:
Código PHP:
Ver original
// la función mysql_num_rows() según el manual devuelve un valor INTEGER o bien FALSE
// ¿cómo es posible que $consulta siendo un número o booleano sea una consulta de SQL al mismo tiempo?
// lo puedes comprobar así:
echo "SQL=$consulta";
// ¿qué muestra?
// por lo tanto la linea de abajo sería equivalente a ejecutar una consulta "1" o bien "TRUE" y son expresiones válidas en SQL pero NO SON CONSULTAS DE SQL
$resultado = $conexion->query($consulta);
En fin, ojalá entiendas lo que te traté de explicar.