This is a perl script that uses DBI to open an SQL database, read all the lines of a table, and print them out in an HTML page. This script assumes you’ve got a table in your database called people_table, and that you’ve got at least two fields, one called firstname and one called lastname.
Everything I know about accessing SQP through perl (which isn’t much) I learned from Chris Sung’s notes, in about half an hour. I copied much of this script from him too.
Technorati Tags: networked objects, networks
Here’s the script:
#!/usr/bin/perl
# Get the directory of this script:
if ($0=~m#^(.*)\\#){ $execDir = "$1"; } # Win/DOS
elsif ($0=~m#^(.*)/# ){ $execDir = "$1"; } # Unix
else {`pwd` =~ /(.*)/; $execDir = "$1"; } # Unix
# get the login (if you get the login like this,
# make sure that only you can read and write to the file (chmod 0600 on the file):
require "$execDir/info.pl";
use DBI();
# Set basic parameters:
$database = $user;
$data_source = "dbi:mysql:$database";
$username = $user;
$password = $passwd;
# Open the database:
&connectSQL;
# Print the top of the HTML page:
&print_header;
# Get everything from the database:
&get_everything;
# Print the bottom of the HTML page:
&print_footer;
# disconnect from the database:
&disconnectSQL;
# End the script:
exit(0);
#########################################################
# Subroutines
#########################################################
#########################################################
# Connect to the database.
#########################################################
# This only needs to be done once per script
sub connectSQL {
$dbh = DBI->connect($data_source, $username, $password,
{'RaiseError' => 1, 'PrintError' => 1});;
}
#########################################################
# Disconnect from the database.
#########################################################
# Always the last thing you do before exiting your script
sub disconnectSQL {
$dbh->disconnect();
}
#########################################################
# Get everything from the given table:
#########################################################
sub get_everything {
# Retrieve all rows from the table and put in normal array:
$SqlStatement = "SELECT * FROM people_table ORDER BY firstname";
$sth = $dbh->prepare($SqlStatement);
$sth->execute();
while (@row_array = $sth->fetchrow_array())
{ $firstname = $row_array[0];
$lastname = $row_array[1];
print "$firstname $lastname <br>\n";
}
$sth->finish();
}
#########################################################
# Print the beginning of an HTML document
#########################################################
sub print_header {
#Print the header of the HTML file:
print "Content-type: text/html\n\n";
print qq^
<html>
<head>
<title>Database Results</title>
</head>
<body>
<h1>database results</h1>
^
}
#########################################################
# Print the end of an HTML document
#########################################################
sub print_footer {
print qq^
</body>
</html>
^
}