2013-04-12 24 views
1

會話變量我有一堆存儲在數據庫中的配置變量,鍵值對通過以下查詢accessable:的Perl - CGI ::應用 - 創建一個從數據庫

select * from conf_table; 

我想加載這些鍵/值對組合成CGI :: Applicaiton會話。目前這是手動完成(所以不是從數據庫,但硬編碼)通過

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

對於一堆鍵值對。對於DBI和某種形式的循環,有沒有更明智的做法?

謝謝

+0

什麼樣的數據庫? –

+0

這是一個Oracle數據庫,我可以通過DBI連接到它,我基本上是問如何用DBI(最明智的方式這樣做)以及如何將結果分配給CGI :: App :: Sessions最明智的方法。 –

回答

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

這似乎正是我正在尋找的。謝謝 –

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;