Hosting Web Sites Around the World
Home   About   Support   Search   Contact
  Ask Support
   
  Account Overview
  Control Panel Overview
    
  Anonymous FTP
  Archive Manager
  Active Server Pages
  CGI-BIN & File Paths
  Changing Passwords
  ContentXpress
  Counters
  Cron Job Manager
  Custom Error Manager
  Email Software Setup
  File Manager
  Formmail
  FTP Instructions
  .htaccess File
  IP address
  Mail Manager
  Mailing Lists
  Mime Types
  MS FrontPage
  MySQL
  Password Protection
  PGP & PGP Mail
  Real Audio/Real Video
  Redirect URL
  Revved Up Tools
  Search Engine
  Secure Mail
  Secure Server SSL
  Shopping Cart
  Site Statistics
  SiteXpress
  SSH / Telnet
  Spam Vault
  Sub-Domains
  Submission Tips
  Webmail
  Web Site Builder

 

 

Support Manual

Using MySQL with CGI Scripts

Using MySQL with Common Gateway Interface scripts will allow you to develop more interactive web sites. Examples include searchable catalogs, user account management, inventory tracking, and information management. Any time you have even small quantities of data which are similar and/or which will change over time, a database solution will likely be useful.

CGI scripting does require programming experience. If you're not familiar with CGI, we suggest you begin with the basics of form processing and non-database applications. There are many books and other resources available to teach you CGI programming.  See our webmaster resources section to get you started. Here we will be focusing on how to program MySQL using Perl as the CGI scripting language.

A Quick Review of How CGI Works

Normally, clicking on a link in a web browser causes the web server to return a static .html page. No matter who clicks on this link or how many times they do it, the resulting returned web page is always the same. To change a static .html page, the site's webmaster must edit the contents of the .html file.

On the other hand, a CGI script allows a link or a button in a web page to run a program on the web server. This program can do any number of things from getting the current date and time to performing a complex lookup and update in a database. In either case, the results are not the same everytime the link or button is pressed.

The process occurs something like this:

  1. User clicks on a link in a web page (e.g. http://www.cgitest.com/cgi-bin/test.cgi).
  2. The web server runs the program test.cgi.
  3. The test.cgi program does what it is programmed to do.
  4. The test.cgi program also builds a .html file in memory and sends it back to the user's browser.
It is the last two steps which make CGI scripts so useful. The program can perform whatever operation it needs to and it can then generate a .html page based on the results of these operations. When the CGI script is used with a database such as MySQL, many things are possible. Generally, the page returned to the user's browser contains the results of the database search. Or, if the user had provided information through a form in the web page, the database records were updated.

Using Perl to Access a MySQL Database

The programming language Perl is what we are using here in our examples. Access to MySQL using Perl requires the Perl DBI module. Both Perl and the DBI module are installed and available to use through your web site account.

The following code example sets up a connection to the www.yourwebsite.com database, prepares and executes an SQL statement, stores the result in a local variable, and then cleans up the connection.

# Use the DBI module
use DBI qw(:sql_types);

# Declare local variables

my ($databaseName, $databaseUser, $databasePw, $dbh);
my ($stmt, sth, @newRow);
my ($telephone);

# Set the parameter values for the connection
$databaseName = "DBI:mysql:yourWebSite_com";
$databaseUser = "yourLoginId";
$databasePw = "yourLoginPassword";

# Connect to the database
# Note this connection can be used to 
# execute more than one statement
# on any number of tables in the database

$dbh = DBI->connect($databaseName, $databaseUser, 
    $databasePw) || die "Connect failed: $DBI::errstr\n";

# Create the statement. 
$stmt = "SELECT Name FROM Phonebook  
         WHERE (Telephone LIKE '518%')";

# Prepare and execute the SQL query
$sth = $$dbh->prepare($$stmt) 
    || die "prepare: $$stmt: $DBI::errstr";
$sth->execute || die "execute: $$stmt: $DBI::errstr";

# Get the first record
# If more than one record will be returned put
# the fetchrow in a while loop
@record = $sth->fetchrow()

# Get the value of the first field returned.
$telephone = $record[0];

# Clean up the record set and the database connection    
$sth->finish();
$dbh->disconnect();

All queries follow the same basic formula. Simply replace the SELECT statement with the INSERT, UPDATE, DELETE, etc. statement you wish to use. Note that these other queries do not return records. So, the fetchrow() and assignment which follows should be deleted for them.

Many other operations such as joins, subqueries, grouping, and sorting are all supported by providing a proper SQL statement in place of the one above.

 

Copyright © 2003-2007 Hosting Connecticut, LLC.
Resellers of Hosting Connecticut, LLC. may reproduce this manual on their sites.