How can we tell, without seeing your schema and some sample data?
But offhand I see two things about that query that worry me:
(1) You are specifying the name of the TABLE by means of ... what?
isn't a PHP variable, so what is it?
And in any case, why is it dynamically specified? PLEASE don't tell us you have more than one table of ctiy_name's.
(2) You are limiting the selection to one country, good. You are using a country *apparently* obtained in another query. Probably bad. Probably you should be using *ONE* combined query, not two separate ones.
In any case: DEBUG DEBUG DEBUG!!!!
$qry_city = "select * from " . CITY . " where `country_id`='$row_country[id]' order by `city_name` ASC";
echo "DEBUG SQL: " . $qry_city . "<hr/>\n";
Look at the DEBUG output. Copy/paste the query, as you see it in the DEBUG output, to your favorite MySQL tool (phpmyadmin, or whatever you use). Execute it in the tool. Do you still see the same strange results?