in reply to Perl DBI - returning a single value
-
What am I doing wrong?
Having written dozens of Perl DBI based scripts/apps/CGI/whatever over the years I'm pretty set in my ways of approaching things like this. So let me show you my method and see if it helps you.
#!/usr/bin/perl -w # # Boiler-plate-ish database pattern use strict; use DBI; my $dbh = DBI->connect("DBI:Pg:dbname=mydatabase",'','') or die $DBD::errstr; my $sth = $dbh->prepare( qq( SELECT Count(*) as x from e_annotation_090812.annotation A WHERE A.use +r IN (SELECT T.Line FROM europhenome_annotation_090812.Temp_table T) +AND entity_name LIKE '%' AND evidence_code NOT LIKE ? AND A.centre LI +KE ? ) ) or die $dbh->errstr; # Handwaving $ev_code and $pattern2 $sth->execute ("%" . $ev_code,"%" . $pattern2); my ($count) = $sth->fetchrow_array();
Important elements of that code to consider.
- Use placeholders... you'll be glad you did. DBI takes care of making sure the correct quoting is in place. Prepending or appending the wildcard character works well.
- The prepare/execute sequence will save you some grief. Especially if you trap errors as I've shown in my example.
Peter L. Berghold -- Unix Professional
Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg
In Section
Seekers of Perl Wisdom