ho messo su un po' di codice che dati dei valori in POST ed estratta una lista di campi unici nella tabella desiderata dovrebbe restituire un array con i nomi di tutti quei campi che non rispettano la prerogativa di unicita'

il codice a funzionare funziona, ma fa davvero schifo. E' rozzo, inelegante e temo sia anche molto lento, visto il numero di interrogazioni al database che richiede.

Lo posto qui, magari riuscite a darmi una mano con l'ottimizzazione (non fate caso a $this e funzioni "ignote" sparse...sono altri "pezzi" della classe di cui il codice fa parte. Ne spiego, dove necessario, la funzione)

codice:
$chiavi = array_keys($values);

if($uniquefields = array_intersect($this->GetUniqueFieldList($table), $chiavi)){
$alreadytakenfields = array();
            
foreach($uniquefields as $nomecampo){
            
$sql = "SELECT " . $nomecampo . " FROM " . $table . " WHERE " . $nomecampo . " = '" . $values[$nomecampo] . "'";

$res = $this->MySqlQuery($sql);
if(mysql_num_rows($res)) array_push($alreadytakenfields, $nomecampo);
            
}
}
L'array $alreadytakenfields contiene ora tutti i campi che nn rispettano il requisito di unicità

$values è un reference a $_POST

La funzione GetUniqueFieldList($table) restituisce una lista dei campi unici nella tabella (per ricavarla interroga il database con una DESCRIBE TABLE e poi gioca coi dati trovati)

Come è piuttosto evidente il grumo è tutto in quel ciclo foreach che effettua count($uniquefields) interrogazioni al database ed è li' che vorrei "pulire" un po'.

Speravo in qualche alchimia o trucchetto direttamente nell'SQL, che conosco in modo molto elementare, che potesse aiutarmi in questa e in, presumibilmente, molte situazioni simili

se avete qualche idea...urlate pure qui! tnx in advance