Осторожно 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. Это надо делать самому, в ручную.