【问题标题】:Using Perl bind_param with SQL IN statement [duplicate]将 Perl bind_param 与 SQL IN 语句一起使用 [重复]
【发布时间】:2010-09-30 16:01:31
【问题描述】:

可能重复:
Is there SQL parameter binding for arrays?

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

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

【问题讨论】:

    标签: sql perl dbi


    【解决方案1】:

    不,你不能轻易做到这一点。一种选择是使用$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);
    

    两者都不是特别漂亮。

    【讨论】:

      【解决方案2】:

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

      where foo in ( ?, ?, ? )
      

      但是你必须恰好有三个绑定。

      【讨论】:

        猜你喜欢
        • 2011-10-21
        • 2011-06-09
        • 1970-01-01
        • 2012-10-02
        • 1970-01-01
        • 2018-02-22
        • 1970-01-01
        • 2011-02-10
        • 2017-03-02
        相关资源
        最近更新 更多