Имя таблицы как параметр с использованием подготовленного оператора PDO / MySQL

Это возможно? например

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 с вашими существующими таблицами.