1

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

select * from conf_table;

我想将这些键/值对加载到 CGI::Applicaiton 会话中。目前这是通过手动完成的(所以不是来自数据库,而是硬编码)

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

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

谢谢

4

2 回答 2

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);
}
于 2013-04-12T10:58:57.733 回答
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;
于 2013-04-13T18:48:44.460 回答