Как сделать двойное условие в SQL запросе?
Почитай что такое третья нормальная форма и что такое связи. 
Тебе нужно вынести категории в отдельную таблицу и реализовать связь многие ко многим. Когда сделаешь это твой вопрос сам собой отпадет)
AND всегда приоритетнее, чем OR. Надо так.WHERE (`categories_id` = '17' OR `categories_id_2` = '17' ...)
  AND (`categories_id` = '1' OR `categories_id_2` = '1' ...)
Может, как говорит, oleg_ods, сработает связь 1:∞, может, и не сработает — но быстрое исправление запроса такое.