Добавление значения mysql в perl с использованием заполнителей - PullRequest
0 голосов
/ 16 февраля 2012

Я хочу добавить значение к значению mysql, уже присутствующему в базе данных.Я знаю, что вы можете сделать это:Я написал следующее, однако это не работает:

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);

Приведенный выше код работает, однако я хочу уменьшить количество подключений моей программы к базе данных, если это возможно.

Спасибо

1 Ответ

0 голосов
/ 16 февраля 2012

Вы можете передать значение, используя bind_param до выполнения запроса:

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 ;
...