PHP / PDO: Подготовленные утверждения не работают при создании таблицы?

Когда я использую подготовленный PDO-оператор и использую его для подключения имени таблицы к запросу, который он не выполняет, быстрый пример:

$stmt = $dbh->prepare("CREATE TABLE ? (id foo, int bar,...)"); $stmt->execute(Array('table_foobar')); 

Все, что он делает, заменяет ? с 'table_foobar' , одиночные кавычки не позволяют создать таблицу для меня!

В итоге мне нужно сделать sprintf в TOP из подготовленного оператора, чтобы добавить в предопределенное имя таблицы.

Чего мне здесь не хватает?

Я не могу найти ничего понятного в руководстве, но, глядя на пользовательские примечания, использование параметров предназначено только для фактических значений , а не для имен таблиц, имен полей и т. Д.

Нормальная конкатенация строк должна (и может) использоваться.

 $tablename = "tablename"; $stmt = $dbh->prepare("CREATE TABLE `$tablename` (id foo, int bar,...)"); 

Если вы создаете таблицу динамически, это, скорее всего, означает, что вы не понимаете идеологию реляционной базы данных и, как результат, делаете что-то неправильно.
Просто создайте все таблицы при настройке приложения из готового дампа и не создавайте никаких таблиц во время выполнения.

Нет необходимости использовать динамическое имя таблицы вообще.