No, a pak se lidé diví, že SQL injection je tak časté. Měl jsem dodat, SQL je ochranou proti SQL injection na správně použitém SQL příkazu. Dynamický ORDER BY je něco, co bych si nikdy nedovolil napsat, a také to nikomu nedoporučuji.
Pokud chcete bezpečně řešit takový dotaz, pak Vám nezbývá než SQL příkaz namnožit:
if col = ... THEN
SELECT FROM ORDER BY 1;
else
SELECT FROM ORDER BY 2;
atd