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();

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...