El problema definitivamente no es pasar o no por GET las variables, es lo que estas pretendiendo pasar, JAMAS debes darle a entender que vas a pasar parámetros para una sentencia SQL ya sea POST o GET, para tal caso solo indica en que orden!
HTML
Código HTML:
Ver original<a href="archivo.php?order=asc">Ascendente
</a>
PHP
Código PHP:
Ver original$SQL = 'select * from mitabla order by celda ';
$SQL .= ($_GET['order'] == 'asc') ? 'asc' : 'desc';
Si piensas usar directamente GET en la variable primero debes "sanear" la variable para evitar SQL injection y demás cosas desagradables, lo que pretendes hacer usando form ocultos es igual que si lo usaras via GET, solo ocultarias el valor de los "curiosos", por lo tanto es un tremendo agujero de seguridad....