non ti conviene usare il comando limit nella query a sto punto ???

A patto che la var in post sia passata correttamente

la query che usi e'

"SELECT * FROM regione WHERE provincia LIKE '%$_POST[provincia]%'";

trasformala innanzitutto come gia' consigliato da djhell in

"SELECT * FROM regione WHERE provincia LIKE '%".$_POST[provincia]."%'";

poi quota il nome tra le quadre
"SELECT * FROM regione WHERE provincia LIKE '%".$_POST['provincia']."%'";

inoltre per gestire il num dei ris la sol migliore e' sempre usare LIMIT.

"SELECT * FROM regione WHERE provincia LIKE '%".$_POST[provincia]."%' limit 0,10";
questo ti da i risultati delle prime 10 righe.
Bene a sto punto ti basta inserire una var che tiene traccia del limit precedente.

$last_limit = $_GET|POST[last_limit]

"SELECT * FROM regione WHERE provincia LIKE '%".$_POST[provincia]."%' limit ".($last_limit+10).",10";

cosi' facendo salti di 10 in 10 e ti liberi dai milioni di cicli di controllo.

Anche perche' poi nel tuo codice c'e' una serie di istruzioni che gesticono i limit e ti consiglio di farti delle stampe dei val che assumono quelle var.
Poi ti modifichi la query come sopra e con moooolto meno codice ti gestisci tto.
infatti :
$query_limit_RSgarage2 = sprintf("%s LIMIT %d, %d", $query_RSgarage2, $startRow_RSgarage2, $maxRows_RSgarage2);
E' una sol un poco macchinosa basata sul retaggio C di chi ha programmato sta pagina.