Ho fatto un passo avanti nel debugging.

Riassumo per semplicità di lettura.

Il file form.php raccoglie la variabile myVars da una <select>; questa variabile mediante jquery/ajax viene inviata al file select.php; quest'ultimo usa la variabile $_GET['myVars'] per effettuare una query MySQL e restituire un array con print_r(). Fin qui ok.

La prima istruzione di form.php é: session_start();

La prime due istruzioni di select.php sono:
$_GET['myVar'] = $var;
$_SESSION['data'] = $var;

Ho la conferma che $_SESSION['data'] (cosa che nei post precedenti non avevo ed ecco dunque il passo avanti nel debugging) viene correttamente valorizzato, in quanto ho fatto l'append di tale variabile a print_r() e con Firebug vedo che l'array ottenuto in risposta da select.php contiene il dato corretto.

select.php (e qui viene il baco) contiene due query MySQL: la prima viene chiamata agendo sulla prima <select> di form.php, la seconda viene chiamata agendo sulla seconda <select> di form.php.

La prima query funziona correttamente
SELECT mio_campo
FROM tabella
WHERE un_campo = '{$_SESSION['data']}'

La seconda no, ossia l'array restituito da print_r(); risulta vuoto. La sintassi é sicuramente corretta e la query funziona se a WHERE un_campo = '{$_SESSION['role']}' sostituisco un valore fisso, ad esempo WHERE un_campo = 1
SELECT *
FROM tabella
WHERE un_campo = '{$_SESSION['role']}'

Come é possibile?