<% # Include for database related stuff use DBI; my $dbuser = "test"; my $dbpass = "test"; my $database = "test"; my $host = "localhost"; my $port = 3306; my $driver = "mysql"; my %standardStatements = ( "addrow" => "INSERT INTO test (string) VALUES (?)", "delrow" => "DELETE FROM test WHERE string=?", "selrow" => "SELECT * FROM test WHERE string=?", ); sub showDBError { my ($dbh) = @_; %> Server Error

Database connection error!

<%= $dbh ? $dbh->errstr : $DBI::errstr %>

<% $Response->End(); } sub getStandardStatement { my ($dbh, $stname) = @_; my $ststr = $standardStatements{$stname}; return undef unless $ststr; my $sth = $dbh->prepare($ststr) || &showDBError($dbh); return $sth; } sub action { my ($dbh, $action, $str) = @_; my $sth = &getStandardStatement($dbh, $action); $sth->execute($str) || &showDBError($dbh); my $row = $sth->fetchrow_arrayref || return undef; return (@$row); } my $queryData = $Request->QueryString(); %> <% if ($queryData->{'nosql'}) { %>

Non-SQL test page

<% } else { my $dsn = "DBI:$driver:database=$database;host=$hostname;port=$port"; my $dbh = DBI->connect($dsn, $dbuser, $dbpass, { RaiseError => 0, AutoCommit => 1 }); if (!defined($dbh)) { &showDBError($dbh); } %>

SQL test page

<% if ($queryData->{'noaction'}) { %>

Skipping all SQL actions

<% } else { %>

Read from database returns:

<% my @row = action($dbh, "selrow", "%"); for $row (@row) { %><% for $k (keys %$row) { %><% } %><% } %>
<%= $k %>: <%= $row->{$k} %>
<% if ($queryData->{'nowrite'}) { %>

Skipping write

<% } else { my $r = rand(10000); %>

Performing Add/Delete row <%= $r %>

<% action($dbh, "addrow", $r); action($dbh, "delrow", $r); } } } %> <% my $path = $Request->ServerVariables('SCRIPT_NAME'); my @query = join ",", map { $_ . "->" . $queryData->{$_} } keys %$queryData; %>

Your query was: <%= "@query" %>