Это не работает, потому что приоритет неправильный. То есть
company_id = ? AND role_id = ? OR role_id = ? OR role_id = ?
интерпретируется как
((company_id = ? AND role_id = ?) OR role_id = ?) OR role_id = ?
потому что AND имеет более высокий приоритет, чем OR - но более уместно для этого случая - они оба ассоциированы слева.
Простое исправление будет таким:
company_id = ? AND (role_id = ? OR role_id = ? OR role_id = ?)
(Но посмотрите другие ответы для альтернативного синтаксиса и / или подходов. Я также позволил себе исправить оператор равенства)
Удачного кодирования.