2012-02-16 59 views
0

我想向數據庫中已存在的mysql值添加一個值。我知道,你可以這樣做:使用佔位符在perl中添加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); 

上述代碼的工作,但是我想減少我的程序有可能的數據庫連接的數量。

感謝

回答

0

你可以通過使用以前bind_param查詢執行的值:

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

for my $int (1 .. 10) { 
    $sth->bind_param(1, $int, SQL_INTEGER); 
    $sth->execute; 
} 

或者,只是通過$intexecute

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

謝謝你,但我仍不很不知道如何讓它將數字添加到數據庫中已存在的值,當我嘗試它時,它不會將值添加到已經存在的值中怨恨。 (例如,數據庫的值爲10,ParentTally爲值10,所以我希望數據庫中新的總值爲20) – Lisa 2012-02-17 10:45:34