Как извлечь из MySQL данные по нескольким критериям силами PHP?
Я не побоюсь выразить наверное то, что крутится у многих на языке, кто прочел это) - Это пиздец, дружище ) Большой, кромешный пиздец )
Выход из ситуации. - nosql. Забудь про Мускул. Сделай все на mongodb например. Все данные хранить в древовидных коллекциях. Вобщем почитай, как раз все твои проблемы решаться оч легко и изящно.
NoSql позволит тебе в одной коллекции (аля таблице) хранить как автомобили с их характеристиками, так и туалетную бумагу, домашних животных и разные сорта вятского кваса.
Upd А по сабжу, если уж на мускуле делать, то нужно делать через связи has_many и/или has_and_belongs_to_many/has_many through, а не лепить айди через запятую и искать регулярками. 
Т.е. есть таблица товаров. Есть таблица фильтров, и есть соединяющая таблица товаров и фильтров. 
У каждого товара есть id, у каждого фильтра есть id, а в соединяющей таблице пишутся id'ы товаров и фильтров. Таким образом ты получишь нужную тебе связь. 
Если ты чувствуешь что делаешь чтото не так, то скорей всего так оно и есть :) С таким подходом как у тебя, теряется вся логическая цепочка, мускул сойдет с ума, ибо не будет ведать что он творит )
Следует понимать, что EAV - не панацея, а несколько наоборот - постоянная боль пониже спины. 
Во-первых, если в реляционной модели за целостностью данных может следить СУБД, то здесь вся работа ложится на программиста.
А уж получив в том же EAV хотя бы пару-тройку уровней вложенности, можно начинать заранее строить себе стену, об которую потом захочется убиться. 
А во-вторых, проблему поиска  EAV не решает от слова "совсем". Искать надо другими средствами, например - сфинксом. 
И вот тут на первый план выходит не удобство хранения, а удобство построения RT индекса. От которого и надо плясать.