DBD :: mysql :: st执行失败:当需要172时,使用181绑定变量调用

时间:2016-06-28 10:48:21

标签: mysql perl bioinformatics

我收到此错误

DBD::mysql::st execute failed: called with 181 bind variables when 172 are needed at line 110, <$fh> line 1.

我认为问题在于代码的这一部分

while ( my $row = <$fh> ) {

    chomp $row;

    my @DNA = split('\|', $row);  

    my $participant_id = $DNA[0];
    $participant_id =~ s/\>//g;

    my $array = $DNA[1];

    my $length = length $array;

    $array =~ tr/a-z/A-Z/;
    $array =~ s/(...)/$1 /g; 
    $array =~ s/\s+/,/g;

    my @DNA1 =   split (',', $array);
    unshift @DNA1, $participant_id;

    $sth4->execute(@DNA1);  # Line 110  
}

$sth4->finish;

1 个答案:

答案 0 :(得分:1)

使用172个占位符我假设SQL语句已自动生成

您需要查看类似

之类的代码
my $sth4 = $dbh->prepare(...);

包含172个占位符?,而您的声明

my @DNA1 = split (',', $array);

导致@DNA1有181个元素

问题出在这些方面

$array =~ tr/a-z/A-Z/;
$array =~ s/(...)/$1 /g; 
$array =~ s/\s+/,/g;

显然没有做你认为他们做的事情

显示$array的内容(在一个新问题中)并描述您真正需要的转型,我们将能够提供帮助

顺便说一句,那些是一些可怕的变量名。 $array显然不是一个数组,而@DBA1只是一些..数据库列表...的东西,并且没有充分的理由有大写字母