Listing 2: The CGI version of our query program

#!/usr/bin/perl -w

use strict;
use diagnostics;
use Mysql;
use CGI;   # available from http://www.perl.com/CPAN

# Create an instance of CGI
my $query = new CGI;

# Send an appropriate MIME header
print $query->header("text/html");

# Begin the HTML output
print $query->start_html(-title =>
   "Query results");

# Connect via Unix sockets to the database on this
# server
my $dbh = Mysql->connect;

# Choose a database
$dbh->selectdb("test");

# Send our query
my $sth = $dbh->query(
   "select name,telephone from phone_book");

# Iterate through the returned rows
my @arr = ();

# Create a table for results
print "<table border=3>\n";

while (@arr = $sth->fetchrow)
{
    # Begin a new table row
    print "<tr>\n";

    # Print the first element in the first column
    print "<td>$arr[0]</td>\n";

    # Print the second element in the second
    # column
    print "<td>$arr[1]</td>\n";

    # End the row
    print "</tr>\n\n";
}

# End the table
print "</table>\n";

# End the HTML
print $query->end_html;

exit;