Es tut nur, worum Sie gebeten haben. Wenn eine Zeichenfolge angegeben wird, ?
entspricht einem String-Literal. Also
SELECT * FROM Table WHERE field = ?
bedeutet
SELECT * FROM Table WHERE field = 'test'
und
SELECT * FROM ?
bedeutet
SELECT * FROM 'test'
Sie müssen
verwenden$dbh->prepare("
CREATE TABLE IF NOT EXISTS ".( $dbh->quote_identifier('test') )." (
`id` bigint(100) unsigned NOT NULL AUTO_INCREMENT
)
");