有效地复制: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是动态的,可以根据表名改变。我不能根据这个数字声明我的变量。有什么建议吗?
答案 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()
。