Estas realizando la consulta correctamente por cada valor pero lo estas guardando el resultado de esa consulta en la misma variable por lo que la estas pisando, y al salir del ciclo foreach en $hr vas a tener el resultado del ultimo registro, eh ahi tu error.
Yo te pongo a mi criterio como deberias hacer:
Código PHP:
Ver original// $refh es tu vector con los ids, entones podes utilizar la funcion join() o implode() para generar un string con todos los ids, separados por una coma y realizar la consulta de una utilizando un IN, entonces sin hacer foreach ni nada por el estilo directamente haces lo siguiente.
$hf = mysql_query("SELECT * FROM habitaciones WHERE IdHabitaciones IN (" . join(',', $refh) . ")", $conexion);
echo "Hab: " . $row[0] . "<br/>";
}