0

私はmysqlデータからドロップダウンリストを作成しようとしています.DBIを 使用してドロップダウンリストを作成し、Perl CGIのドロップダウンボックスから選択した値を取得する方法から解決策を得ました.

私は次のコードを持っています:

#!/usr/bin/perl
use warnings;
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use DBI;
use Data::Dumper;
print "Content-type: text/html\n\n";
my $dbh = DBI->connect();
my @tables=$dbh->selectcol_arrayref('select TABLE_NAME from 1009_table_list order by TABLE_NAME');
print Dumper@tables; #this dumper is giving results
print qq[
<!DOCTYPE html>
<html>
<head></head>
<body>
<form id="upload-form"><table>
<tr><td>Table Name:</td><td><select name="tbname">
];
print Dumper@tables; # this dumper is not printing anything
foreach my $table(@tables)
{
print qq "<option value=\"$table\">" . $table . "</option>";
}
print qq[
</select>
</td></tr>
</table></form></body>
</html>
];

コードの 2 番目のコメントで、ドロップ リストの @tables の値を取得できません。なんで?

4

2 に答える 2

2

selectcol_arrayref配列参照を返すので、次のようになります。

my $tables = $dbh->selectcol_arrayref('select TABLE_NAME from 1009_table_list order by TABLE_NAME');

foreach my $table (@$tables) {
  print qq{<option value="$table">$table</option>};
}
于 2013-09-17T07:34:42.473 に答える
2

my @tables=$dbh->selectcol_arrayref('select TABLE_NAME from 1009_table_list order by TABLE_NAME');

array_ref を返します。これを使用するには、逆参照する必要があります。

my $tables=$dbh->selectcol_arrayref('select TABLE_NAME from 1009_table_list order by TABLE_NAME');
foreach my $table (@$tables) {
    print qq~<option value="$table">$table</option>~;
}
于 2013-09-17T07:35:01.897 に答える