invece di show column dovresti puntare alle colonne del result set ottenuto. In questo modo qualunque query SELECT avra' sempre l'esatto numero di campi. Esempio:
poi stampi l'intestazione con un foreach($row1) seguito dal while che ti stampa il result set.Codice PHP:
.....
$res = mysql_query($query);
$n = mysql_num_fields($res);
for($i = 0 ; $i < $n; $i++ ) {
$row1[] = mysql_field_name($res, $i);
}
L'avevo fatto da piccolo, funzionava alla grande.