nel tuo caso la palla al piede e' sprintf() ... proprio mi sfugge perche' usarlo per valorizzare le variabili.

per esempio:
Codice PHP:
// begin Recordset
if (isset($_GET["zon"]) AND $_GET["zon"] != '' ) {
$KTColParam1__rs_search_f_zon $_GET["zon"];
$valore1 GetSQLValueString($KTColParam1__rs_search_f_zon"int"
} else { 
      
$KTColParam1__rs_search_f_zon '%';  
      
$valore1 GetSQLValueString($KTColParam1__rs_search_f_zon"text"


// ripeti per gli altri due valori e poi il where:

WHERE
ristoranti_ris
.idzon_ris LIKE '$valore1'
AND ristoranti_ris.idamb_ris LIKE '$valore2'
AND ristoranti_ris.idtip_ris LIKE '$valore3' 
lasciando perdere lo sprintf che ti fa solo casino mentre tu il contenuto delle variabili lo hai gia' verificato con la funzione.