Осторожно bind_columns

Вчера нарвался на довольно неприятную особенность работы с MySql у perl.

$sth1 = $dbh->prepare($sql);
$sth1->execute;
$sth3->bind_columns(\$id);
while($sth2->fetch){
...
  $sth2 = $dbh->prepare($sql2);
  $sth2->execute;
  $sth2->bind_columns(\$big, \$autor);
  $sth2->fetch;
}

Первый запрос, первый раз вернул “1″, которое подставилось в $sql2 и тогда второй запрос вернул “5″, “Мет”, но когда запрос пошел второй раз и значений равных условию не оказалось, то как думаете чему по прежнему равнялись переменные $big и $autor? по прежнему “5″, “Мет”.

Получается DBI не обнуляет переменные которым присваивает значения в случае нулевого возврата от SQL. Это надо делать самому, в ручную.

Leave a Reply