C'est juste faire ce que vous avez demandé. Lorsqu'une chaîne est donnée, ?
est équivalent à un littéral de chaîne. Alors
SELECT * FROM Table WHERE field = ?
signifie
SELECT * FROM Table WHERE field = 'test'
et
SELECT * FROM ?
signifie
SELECT * FROM 'test'
Vous devez utiliser
$dbh->prepare("
CREATE TABLE IF NOT EXISTS ".( $dbh->quote_identifier('test') )." (
`id` bigint(100) unsigned NOT NULL AUTO_INCREMENT
)
");