Mysql
 sql >> Database >  >> RDS >> Mysql

Perl dbi prepare sta mettendo una citazione sbagliata

Sta solo facendo quello che hai chiesto. Quando viene assegnata una stringa, ? è equivalente a una stringa letterale. Quindi

SELECT * FROM Table WHERE field = ?

significa

SELECT * FROM Table WHERE field = 'test'

e

SELECT * FROM ?

significa

SELECT * FROM 'test'

Devi usare

$dbh->prepare("
   CREATE TABLE IF NOT EXISTS ".( $dbh->quote_identifier('test') )." (
             `id` bigint(100) unsigned NOT NULL AUTO_INCREMENT
          )
");