É só fazer o que você pediu. Quando recebe uma string,
?
é equivalente a um literal de string. Então SELECT * FROM Table WHERE field = ?
significa
SELECT * FROM Table WHERE field = 'test'
e
SELECT * FROM ?
significa
SELECT * FROM 'test'
Você precisa usar
$dbh->prepare("
CREATE TABLE IF NOT EXISTS ".( $dbh->quote_identifier('test') )." (
`id` bigint(100) unsigned NOT NULL AUTO_INCREMENT
)
");