perl - 如何在 DBI 查询中使用变量作为表名?

标签 perl dbi

如何在 DBI 查询中使用变量作为表名?我知道如何使用占位符作为 where 子句的一部分,但是如何为表名执行此操作?

我想做这样的事情:

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

到目前为止,我最终得到了一个 MySQL 语法错误,因为 DBI 在名称 table1 周围添加了引号。

最佳答案

占位符的限制之一是它们不能用于表名。您可以使用变量,而不是使用占位符。要确保变量的内容是安全的,请使用 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();

关于perl - 如何在 DBI 查询中使用变量作为表名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1400848/

相关文章:

Ruby-DBI MSSQL - 当我尝试选择一个句子时,我只得到 nils 作为结果

mysql - 迁移 perl dbi 脚本导致 DBD::mysql::st 执行失败:MySQL 服务器已消失

postgresql - 我可以在连接后定义 DBIx::Class::ResultSource::View 吗?

perl - 如何从内存中删除 perl 对象

perl - 为什么我无法在 Ubuntu 18.04 上安装 Perl Net-SNMP

linux - 生成 Linux X11 事件?

mysql - Ruby:Mysql 时间戳/日期时间问题

python - 突出显示 GNOME 窗口列表中的一个窗口

c - 在 Perl 中实现类似 sscanf 的功能的最佳方法是什么?

Perl DBD::CSV - SQL 语法 - "AND"子句无法正常工作