Делать в цикл запросы к базе - очень плохо, т.к. нагрузки повышаются из пустого места, лучше:
если необходимо выбрать только города (без регионов):
SELECT * FROM cities
если необходимо выбрать только города, относящиеся к определенным регионам:
SELECT *
FROM cities
WHERE region_id IN (1, 2, 3)
если необходимо выбрать информацию и по городам и по регионам:
SELECT cities.*, regions.* FROM cities
LEFT JOIN regions ON regions.id = cities.region_id
ну и не стоит забыть что информация о городах/регионах обновляется очень редко, поэтому стоит закешировать эту информацию