Koenig, в where параметр $type я вижу проверка идет с учетом регистра. Т.е. если я захочу написать LIKE вместо like (а я всегда так пишу), то ничего не выйдет.
А вот здесь вообще мультибайтовую функцию зачемто применил, когда вполне хватилобы strtolower
(mb_strtolower($type), array('asc', 'desc'))