Как использовать переменную для имени таблицы в запросе DBI?

Как использовать переменную для имени таблицы в запросе DBI? Я знаю, как использовать заполнители как часть предложения where, но как мне сделать это для имени таблицы?

Я хотел бы сделать что-то вроде этого:

 my $table_name='table1';
 my $query = $dbh_cgi->prepare("select * from ?");
 $query->execute($table_name);

До сих пор я получаю синтаксическую ошибку MySQL, потому что DBI добавляет кавычки вокруг имени table1.


person sutee    schedule 09.09.2009    source источник


Ответы (1)


Одним из ограничений заполнителей является то, что их нельзя использовать для имен таблиц. Вместо использования заполнителя вы можете использовать переменную. Чтобы убедиться, что содержимое переменной безопасно, используйте quote_identifier(), например:

my $table_name='table1'; #-- Or get this from somewhere else
my $safe_table_name =  $dbh_cgi->quote_identifier($table_name);
my $query = $dbh_cgi->prepare("select * from $safe_table_name");
$query->execute();
person Adam Bellaire    schedule 09.09.2009