Perl - CGI::Application - Создать переменные сеанса из базы данных

У меня есть куча переменных конфигурации, хранящихся в базе данных, пары ключей и значений доступны через следующий запрос:

select * from conf_table;

Я хочу загрузить эти пары ключ / значение в сеанс CGI::Applicaiton. На данный момент это делается вручную (не из базы данных, а жестко закодировано) через

$self->session->param( NAME => VALUE );

Для нескольких пар ключ-значение. Есть ли более разумный способ сделать это с DBI и некоторой формой цикла?

Спасибо

2 ответа

Решение

Вы имеете в виду что-то вроде этого?

my $sth = $dbh->prepare("select key, value from mytable");
$sth->execute;
$sth->bind_columns(\(my ($key, $value)));
while ($sth->fetch) {
  $self->session->param($key => $value);
}

DBI имеет несколько удобных методов, которые упрощают эту работу. Попробуйте selectall_arrayref:

my $configs = $dbh->selectall_arrayref(
    'SELECT * FROM conf_table',
    { Slice => {} }, # make each row a hash
);
$self->session->param($_->{key} => $_->{value}) for @$configs;
Другие вопросы по тегам