Gebruik MySQL's FIELD()
functie:
SELECT name, description, ...
FROM ...
WHERE id IN([ids, any order])
ORDER BY FIELD(id, [ids in order])
FIELD() zal de index van de eerste parameter teruggeven die gelijk is aan de eerste parameter (anders dan de eerste parameter zelf).
FIELD('a', 'a', 'b', 'c')
zal 1 teruggeven
FIELD('a', 'c', 'b', 'a')
zal terugkeren 3
Dit zal precies doen wat je wilt als je de id's plakt in de IN() clausule en de FIELD() functie in dezelfde volgorde.