Current File : //usr/share/webmin/custom/sql.cgi |
#!/usr/bin/perl
# Execute some SQL and display the result
require './custom-lib.pl';
if ($ENV{'CONTENT_TYPE'} =~ /multipart\/form-data/i) {
&ReadParseMime();
}
else {
&ReadParse();
}
&error_setup($text{'srun_err'});
$cmd = &get_command($in{'id'}, $in{'idx'});
&can_run_command($cmd) || &error($text{'run_ecannot'});
# Connect to the DB
use DBI;
$drh = DBI->install_driver($cmd->{'type'});
$drh || &error($text{'srun_edriver'});
($driver) = grep { $_->{'driver'} eq $cmd->{'type'} } &list_dbi_drivers();
$dbh = $drh->connect($driver->{'dbparam'}."=".$cmd->{'db'}.
($cmd->{'host'} ? ";host=$cmd->{'host'}" : ""),
$cmd->{'user'}, $cmd->{'pass'}, { });
$dbh || &error(&text('srun_econnect', $drh->errstr));
# Show header
&ui_print_unbuffered_header(undef, $text{'srun_title'}, "");
print &text('srun_cmd', "<tt>$cmd->{'sql'}</tt>"),"<p>\n";
# Work out params
($env, $export, $str, $displaystr, $args) = &set_parameter_envs($cmd, $cmd->{'sql'}, undef);
# Run it
$cmd = $dbh->prepare($cmd->{'sql'});
if (!$cmd) {
print &text('srun_eprepare', $dbh->errstr),"<p>\n";
}
elsif (!$cmd->execute(@$args)) {
print &text('srun_eexecute', $dbh->errstr),"<p>\n";
}
else {
# Show results
if (@titles = @{$cmd->{'NAME'}}) {
print &ui_columns_start(\@titles);
# Show results
while(my @r = $cmd->fetchrow()) {
print &ui_columns_row(\@r);
}
print &ui_columns_end();
$cmd->finish();
}
else {
$r = $cmd->finish();
print &text('srun_none', $r),"<p>\n";
}
}
&ui_print_footer("", $text{'index_return'});