Web Developer's Virtual Library: Encyclopedia of Web Design Tutorials, Articles and Discussions


WDVL Newsletter

Active Server Pages
JSP/Java Servlets
Microsoft SQL Server
Daily Backup
Dedicated Servers
Streaming Audio/Video
24-hour Support    

jobs.webdeveloper.com

Hiermenus


e-commerce
Partner With Us















Developer Channel
FlashKit.com
JavaScript.com
JavaScriptSource
Developer Jobs
ScriptSearch
StreamingMediaWorld
Web Developer's Journal
Web Developer's Virtual Library
WebDeveloper.com
Webreference
Web Hosts
XMLfiles.com

internet.com
IT
Developer
Internet News
Small Business
Personal Technology

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers


Query Know How

September 13, 1999

The basis of the previous section, A Simple Query, may be all you need to know to generate SQL queries and receive the results. Because SQL is a programming language in its own right, our technique essentially boils down to using one programming language (Perl) to send the code of another language (SQL) to an interpreter, and turning back to Perl to receive and process the results. So, even a complex SQL query can be sent and processed with simple Perl code, since most of the effort takes place inside the database engine.

In our example query script we used a simple technique for retrieving the returned data: dump each row into an array. For many applications this works perfectly well. But there are some alternative capabilities of DBI that you may find helpful in receiving database results.

  • $sth->{NUM_OF_FIELDS};
    This attribute of the DBI statement handle can let you in on how many fields are being returned for each row. Of course, you may already know this information if you constructed the SQL statement yourself (as we did in our earlier example), but if your script programmatically constructed the SQL statement from user input you may find this information useful.

  • Speaking of foreknowledge, you might be wondering how to know the number of rows returned for a query -- before you retrieve the data for each one. This may or may not be possible depending on which database product you use; in our testing, Microsoft Access did not seem to return this information for the sample database.
    $sth->rows;
    This method may return -1 if your database does not report this information, but you can give it a try.

  • An easier way to process incoming fields is to return each row into a hash reference rather than an array. In a hash you can access each field by its name. Recall our A Simple Query example, where we want to receive a row which contains ClientName and ClientEmail:
    $row=$sth->fetchrow_hashref;
    Now, we can access each returned field by name:
    while ($row=$sth->fetchrow_hashref)
    	 {print "Client's Name: $row->{ClientName}\t
    	         E-mail address: $row->{ClientEmail}\n"}
  • The hash reference is a convenient way to format incoming fields into formatted output such as an HTML document. Sometimes you may want to spit out a quick dump of all returned data, perhaps for testing purposes. You could write a simple routine to do this, or:
    $sth->dump_results;
    Which simply retrieves all returned rows and outputs the data simply formatted.

A Simple Query
The Perl You Need to Know
Where We Stand


Up to => Home / Authoring / Languages / Perl / PerlfortheWeb




Jupiter Online Media: internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and Jupiter Online Media

Jupitermedia Corporate Info


Legal Notices, Licensing, & Permissions, Privacy Policy.

Web Hosting | Newsletters | Tech Jobs | Shopping | E-mail Offers