在perl中使用占位符添加mysql值
我想向数据库中已经存在的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->
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)