使用Perl bind_param和SQL IN语句

1 sql perl dbi

可能重复:
数组是否有SQL参数绑定?

我想知道是否还有将bind_param与SQL IN语句一起使用.根据perl文档,不能使用bind_param_array.有没有人遇到过同样的情况?

http://search.cpan.org/perldoc?DBI#bind_param_array

a'r*_*a'r 9

不,你不能轻易做到这一点.一种选择是使用$dbh->quote,例如.

my @values = (1,2,3,4);
my $sql = "SELECT * from my_table WHERE ID IN (";
$sql .= join(',', map { $dbh->quote($_) } @values)
$sql .= ')';
Run Code Online (Sandbox Code Playgroud)

或者,您可以创建必要的占位符并将数组作为绑定参数传递,例如.

my @values = (1,2,3,4);
my $sql = "SELECT * from my_table WHERE ID IN (";
$sql .= join(',', map { '?' } @values);
$sql .= ')';

my $sth = $dbh->prepare($sql);
$sth->execute(@values);
Run Code Online (Sandbox Code Playgroud)

两者都不是特别漂亮.