Как вывести информацию с БД массивом?
в $query->execute(['ref' => $my_ref[0]]); данные массивом передались.
к сожалению биндинг в pdo не умеет работать с массивами, каждый параметр должен быть конечным объектом (число.,  строка...)

так же чтобы условие в sql обрабатывало массив нужно использовать выражение
select ... from ... where id in (1,2,3,4,...)

поэтому чтобы решить указанную задачу нужно формировать sql запрос по старинке (без использования prepare и биндингов), естественно аккуратно к значениям, либо валидировать их что они являются числами, а если должны быть строки - то правильно экранировать

$sql='select ... from ... where id in ('.implode(',',$id_array).')'
Так же проверь что массив идентификаторов не пустой, так как иначе будет ошибка в sql

p.s. осторожно, количество значений в 'id in' лимитировано (кажется 1000), если инужно больше, то придется создавать временную таблицу, заливать в нее искомые идентификаторы и строить запрос с left join

Еще я встречал похожий метод но с использованием биндингов, когда sql запрос генерировался вида:
select ... from ... where id in (?,?,?,?,...)
с нужным количеством ? тогда передав массив напрямую в execute можно получить результат, лимит на количество ? еще меньше, это определяется драйвером базы данных.

p.p.s. и совсем сверху на засыпку методика, ее имеет смысл использовать когда со стороны клиента фильтруемых данных больше чем 1 поле (например 2 массива точнее таблица с несколькими колонками) и очень не хочется заполнять в базе временную таблицу с этими данными (это очень сильно роняет производительность) то можно сформировать внутри sql таблицу из константных данных:
select ... from ...,
(
  select ? as col1,? as col2
  union select ?,?
  union select ?,?
...  
) x where ...
для этого надо SQL учить не по видео с юутубы, а по учебникам
открыть для себя джойн, и узнать, что все делается одним запросом.