Это возможно? например
SELECT * FROM :database WHERE id = :id
Если нет, должен ли я просто сделать это:
SELECT * FROM ' . $database . ' WHERE id = :id
Или есть какой-то другой трюк, который мне нужно изучить?
Имена таблиц и столбцов не могут быть заменены параметрами в PDO. см. Могут ли выражения PHP PDO принимать имя таблицы или столбца в качестве параметра?
Очень опасно передавать динамически построенные имена таблиц в запросе. Но если это так необходимо вашему приложению, вы должны дезинформировать данные. Поскольку PDO не может с этим справиться , вам нужно вызвать mysql_real_escape_string по имени таблицы самостоятельно. Также вам придется заключить имя таблицы с обратными записями как `table_name`. Поэтому подготовьте запрос как:
'SELECT * FROM `' . mysql_real_escape_string($database) . '` WHERE id = :id
Одна нота: mysql_real_escape_string
требует уже установленного соединения с БД.
EDIT: Но когда я думаю об этом, вероятно, лучше всего сопоставить переменную $database
с вашими существующими таблицами.