【问题标题】:Perl - CGI::Application - Create session variables from databasePerl - CGI::Application - 从数据库创建会话变量
【发布时间】:2013-04-14 02:48:44
【问题描述】:

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

select * from conf_table;

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

手动完成的(所以不是来自数据库,而是硬编码)
$self->session->param( NAME => VALUE );

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

谢谢

【问题讨论】:

  • 什么样的数据库?
  • 它是一个 Oracle 数据库,我可以通过 DBI 连接到它,我本质上是在问如何使用 DBI 执行此操作(这样做最明智的方法)以及如何将结果分配给 CGI: :App::Sessions,又是最明智的方式。

标签: perl dbi cgi-application


【解决方案1】:

你的意思是这样的?

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

【讨论】:

  • 这似乎正是我正在寻找的。谢谢
【解决方案2】:

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 2016-05-07
    • 2019-05-04
    • 2013-04-09
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多