Гы. Летом я занимался написанием подрограммы для работы с БД. Что бы было легко работать и можно было быстро менять запрос не меняя программу. И вот что у меня получилось. Не без помощи форумцев.
| Код | sub mysql_request { my $sql = shift; my @row; my $sth = $dbh->prepare($sql); $sth->execute;
if (($sql =~ m/^select/i) || ($sql =~ m/^show/i)){ while (my $ref = $sth->fetchrow_hashref()) { push @row, $ref; }
$sth->finish(); return \@row; } }
|
Пользоваться этой подпрограммой одно УДОВОЛЬСТВИЕ!
| Код | my $sql = "UPDATE " . $prefix . "_users SET email = '$email', name = '$name', second_name = '$second_name', birthday = '$birthday', icq = $icq, url = '$url' WHERE login = '$login'";
# В переменную $sql загоняем текст запроса
|
Дальнейшие действия зависят от того какой у нас был запрос. Если это просто вставка или модификация информации, то исполняем запрос так
| Код | mysql_request ( $sql ); # Запрос выполнен
|
Если это запрос SELECT то выполняется так
| Код | my $ref = mysql_request ( $sql );
|
Все. Ответ базы данных находится в хешах. А что бы добраться до них нам надо разыменовать $ref
Если у вас такой запрос, что в ответ база выдаст только одну строку, то удобнее пользоваться такой конструкцией
| Код | my $hash = @{$ref}[0]; print $hash->{'id'}; # Вся красота заключается в том, что тут надо указывать имя столбца! И не париться :)
|
А если в ответ SQL сервер выдаст много строк, то вынимать надо так
| Код | foreach my $hash(@{$ref}) { print $hash->{'id'}; }
|
Воть. Так что используй эту подпрограмму и никогда не будет вопросов в какой переменной получить ответ от базы данных |