Что за полтергейст с MySql и PDO происходит, не работает prepare statment?
pdo тут вообще не при делах, это нормальное поведение субд: плейсхолдерами/переменными могут быть только аргументы, названия таблиц/колонок/etc - не могут.
чтоб это понять достаточно немного почитать как вообще работает механизм подготовленных выражений.
Зачем понадобилось выносить имя таблицы в переменную?
PDO добавляет кавычки при подстановке значений, так что для имени таблиц это не подходит.