Ti ringrazio per il consiglio. Ho provato a usare le sessioni e la prima impressione è che sia tutto ok. Non sapevo che in una variabile di sessione si potesse memorizzare un array. Infatti all'inizio mi dava errore quando andavo a fare il controllo sull'operatore ternario. Poi ci ho aggiunto altre due parentesi quadre per renderlo bidimensionale e come per magia ha funzionato.
Già così dimezzo le query.

Ho fatto così

codice:
// questa è la pagina del form con session_start() ovviamente
$_SESSION['centri'] = array();

$queryCentri = mysql_query("SELECT centro FROM centri order by idcentro") or die(mysql_error());
                              <?php
				while ($row = mysql_fetch_assoc($queryCentri)) {
					$_SESSION['centri'][] = $row['centro'];
		  			echo "<option value=\"$row[centro]\">$row[centro]</option>";
				}	?> ....

// e questa è la pagina che riceve i dati del form che fa il controllo
$centro = in_array($_POST['centro'],$_SESSION['centri']) ? $_POST['centro'] : exit('valore centro non ammesso');
Se qualcun altro mi conferma che questo è il modo migliore di procedere e che non ho tralasciato niente mi toglie una preoccupazione.