如何处理数据库查询中的不同数量的项目?

时间:2009-02-23 05:59:17

标签: perl dbi

有效地复制:How can I display data in table with Perl

这里适用的答案适用于此。一些替代方案也是如此。


我正在尝试从Perl程序运行原始数据库查询并将结果显示给用户。像select * from table这样的东西。我想在HTML表格中显示信息。 HTML表中的列与返回的列对应。

我遇到了一些问题。我可以运行describe table查询来返回表中的列数。但是,如何将返回结果中的信息存储到数组中?

所以,如果我存储的结果如下:

while (($f1, $t2, $n3, $k4, $d5, $e6) = $sth1->fetchrow_array)

在这种情况下,我只知道有四列(我从描述表中获得)。但这个数字4是动态的,可以根据表名改变。我不能根据这个数字声明我的变量。有什么建议吗?

3 个答案:

答案 0 :(得分:4)

尝试:

print "<table>\n";

# display HTML header
@cols = @{$sth->{NAMES_uc}};
print "<tr>".join("", map { "<th>${_}</th>" } @cols)."</tr>\n";

# display one HTML table row for each DB row
while (my @row = $sth->fetchrow_array) {
  print "<tr>".join("", map { "<td>${_}</td>" } @row)."</tr>\n";
}
print "</table>\n";

答案 1 :(得分:2)

while (my @row = $sth->fetchrow_array)
{
        print "<tr>".join("", map{ "<td>${_}</td>" } @row)."</tr>"  ;
}

答案 2 :(得分:2)

使用答案中建议的另一个问题的技巧 - 使用fetchrow_array获取数组:

while (my @row = $sth->fetchrow_array())
{
    ...process array...
}

或使用fetchrow_array()的替代方法,例如fetchrow_hashref()