Perl - CGI :: Application - 从数据库创建会话变量

时间:2013-04-12 10:42:21

标签: perl dbi cgi-application

我有一堆存储在数据库中的配置变量,可通过以下查询访问键值对:

select * from conf_table;

我想将这些键/值对加载到CGI :: Applicaiton会话中。目前这是通过

手动完成的(因此不是从数据库,而是硬编码)
$self->session->param( NAME => VALUE );

对于一堆键值对。使用DBI和某种形式的循环是否有更合理的方法呢?

由于

2 个答案:

答案 0 :(得分:3)

你的意思是这样的吗?

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);
}

答案 1 :(得分:1)

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;