Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Perl dbi prepare está colocando cotação errada


É 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
          )
");