在perl中使用占位符添加mysql值

在perl中使用占位符添加mysql值,mysql,perl,placeholder,Mysql,Perl,Placeholder,我想向数据库中已经存在的mysql值添加一个值。我知道您可以通过以下方式实现: my $sql1 =qq(UPDATE genotype SET Tally=Tally+10); 但是,我希望“+10”是一个占位符,因为该值将根据程序所处的for循环迭代而变化。我写了以下内容,但它不起作用: my $sql1 =qq(UPDATE genotype SET Tally=Tally + ?); my $sth1 = $dbh_m-> prepare($sql1); $sth1->

我想向数据库中已经存在的mysql值添加一个值。我知道您可以通过以下方式实现:

 my $sql1 =qq(UPDATE genotype SET Tally=Tally+10);
但是,我希望“+10”是一个占位符,因为该值将根据程序所处的for循环迭代而变化。我写了以下内容,但它不起作用:

my $sql1 =qq(UPDATE genotype SET Tally=Tally + ?);
my $sth1 = $dbh_m-> prepare($sql1);

$sth1->execute($ParentTally);
可以在这里使用占位符吗?我还写了:

my $sql5 =qq(SELECT Tally FROM genotype);
my $sth5 = $dbh_m-> prepare($sql5); 

$sth5->execute();
my $newTally;

while (my $ChosenTally = $sth5 ->fetch){
    for my $field (@$ChosenTally){
        $newTally=$field;
    }
}

$newTally+=$ParentTally;


my $sql6 =qq(UPDATE genotype SET Tally= ?);
my $sth6 = $dbh_m-> prepare($sql6); 

$sth6->execute($newTally);
上面的代码确实有效,但是如果可能的话,我希望减少程序与数据库的连接数


谢谢

您可以在执行查询之前使用以下命令传递值:

my $sth = $dbh->prepare( $query_with_placeholder );

for my $int ( 1 .. 10 ) {
    $sth->bind_param(1, $int, SQL_INTEGER );
    $sth->execute;
}
或者,只需将
$int
传递到
execute

$sth->execute( $_ ) for 1 .. 10 ;

谢谢,但是我仍然不明白如何让它将数字添加到数据库中已经存在的值中,当我尝试此操作时,它不会添加到已经存在的值中。(例如,数据库的值为10,ParentTally的值为10,因此我希望数据库中的新总值为20)