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;