Re: hoe to connect postgres database thru perl

From: Sean Davis <sdavis2(at)mail(dot)nih(dot)gov>
To: sudheer raghav <yelukur(at)yahoo(dot)com>
Cc: pgsql-novice(at)postgresql(dot)org, bfd(at)att(dot)net, mhammonds(at)knowledgeinenergy(dot)com, darold(at)neptune(dot)fr, dave(at)vanabel(dot)com
Subject: Re: hoe to connect postgres database thru perl
Date: 2005-01-21 11:08:46
Message-ID: D1D7E2E8-6B9C-11D9-91D9-000D933565E8@mail.nih.gov
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

What error did you receive?

On Jan 19, 2005, at 1:34 AM, sudheer raghav wrote:

> hi,
> am new to Perl.
> How to connect postgresql database with perl ? here
> is the Perl code follows:
> #!/usr/bin/perl
> use CGI qw(:standard);
> use DBI;
> use strict;
>
> print "Content-type: text/html\n\n";
> use CGI::Carp qw/fatalsToBrowser/;
> $query = new CGI;
> print $query->header;
>
> $dbh = DBI->connect("dbi:Pg:dbname=test", "postgres",
> "", {AutoCommit => 1, Rais
> eError => 1});

It is a good idea to do:

> $dbh = DBI->connect("dbi:Pg:dbname=test", "postgres",
> "", {AutoCommit => 1, Rais
> eError => 1}) || die "Unable to connect to database $DBI::errstr";

(i.e., add the die, just in case your server isn't started or some such
thing....)

> if($query->param("submit") eq "save") {
> $sth = $dbh->prepare("SELECT ip_add from firewall
> where $source_add ='10.0.0.10'");

What is $source_add? I don't see it elsewhere in the code, so this code
can't work. In fact, does it even compile? My guess is that it
doesn't, as you have used strict (good) and $source_add is not
declared. See my comments about setting up a simple script without
using the CGI.

> } else {
> print "error";
> }
>
> if(!defined($sth)) {
> print "ERROR: Unable to execute database query:
> $DBI::errstr\n";
> exit;
> }
> $sth->execute;
>
>
> $sth->finish;
>
> print $query->start_html("FIREWALL");
>
> print <<"EOF";
> <HTML>
> <BODY>
> print "<center><H1>FIREWALL</H1></center>\n";
> print "IP Adress:";
> print $query->popup_menu(-name=>'IP Adress',
>
> -Values=>['10.0.0.1','10.0.0.2','10.0.0.3','10.0.0.4',10.0.0.5,10.0.0.6
> ],

Although I imagine you have a specific project you want to accomplish,
it is usually a good idea to test new modules, etc. outside of the CGI
environment. Write a toy script that connects to the database, does a
query, prints the result, and then closes the database connection.
Then, when there are problems, it will be clearer what is going on.

Also, while the DBI documentation is enormous, it is packed with useful
information and examples. If you are going to be using DBI much, read
the manual thoroughly and use the examples.

HTH,
Sean

In response to

Browse pgsql-novice by date

  From Date Subject
Next Message Sean Davis 2005-01-21 11:11:28 Re:
Previous Message Paul Murphy 2005-01-21 11:07:10 Re: Problems with PL/pgSQL and LIKE statement