将 Perl bind_param 与 SQL IN 语句结合使用

发布于 2024-09-25 17:42:40 字数 428 浏览 5 评论 0原文

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

我想知道是否有 无论如何,将bind_param 与SQL IN 语句一起使用。根据perl文档bind_param_array也不能使用。有人遇到过同样的情况吗?

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

Possible Duplicate:
Is there SQL parameter binding for arrays?

I was wondering if there is anyway to use bind_param with SQL IN statements. According to perl documentation bind_param_array cannot be used as well. Has anyone come across the same situation?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

熟人话多 2024-10-02 17:42:40

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

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

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

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

两者都不是特别漂亮。

No you can't do this easily. One option is to use $dbh->quote, eg.

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

Or you can create the necessary placeholders and pass the array in as bind parameters, eg.

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

Neither is exceptionally pretty.

池予 2024-10-02 17:42:40

如果您想要任意数量的占位符,则不行。您可以将它与 IN 一起使用,如 in

where foo in ( ?, ?, ? )

所示,但是您必须恰好具有三个绑定。

Not if you're wanting an arbitrary number of placeholders, no. You can use it with an IN, as in

where foo in ( ?, ?, ? )

but then you must have exactly three binds.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文