Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: Re: OK, OK, I'm taking the DBI plunge. Now what?

by peppiv (Curate)
on Jan 17, 2002 at 18:40 UTC ( [id://139513]=note: print w/replies, xml ) Need Help??


in reply to Re: OK, OK, I'm taking the DBI plunge. Now what?
in thread OK, OK, I'm taking the DBI plunge. Now what?

use strict; use DBI; use CGI::Carp qw(fatalsToBrowser); use CGI qw (:standard); print "Content-type: text/html\n\n"; my $dbh = DBI->connect(qq{DBI:CSV:f_dir=/usr/local/etc/httpd/cgi- +bin/}, {RaiseError => 1} ); $dbh->{'sep_char' => "|", 'col_names' => ["timestamp", "email", " +name", "address", "city", "state", "zip"]}; my $sth = $dbh->prepare( q{SELECT * FROM export_list WHERE state += ? }); my $rc = $sth->execute ('OH'); print "Query will return $sth->{NUM_OF_FIELDS} fields.\n\n"; while (my @result = $sth->fetchrow_array()) { print "@result\n"; } die $sth->errstr if $sth->err; $dbh->disconnect;

I've used the col_names attribute and I don't receive any errors for that line. However I do get this error:
Attempt to fetch row from a Non-SELECT statement at /usr/local/etc/httpd/cgi-bin/DBI_start3.pl line 23.(*the fetchrow_array statement line).I'm researching this now. Question - If an error statement comes up for line 23, is it safe to assume that the lines of code before that are executing OK? Assuming you're not jumping around with subs.

Replies are listed 'Best First'.
Re: Re: Re: OK, OK, I'm taking the DBI plunge. Now what?
by runrig (Abbot) on Jan 17, 2002 at 22:38 UTC
    You are not specifying which table you are setting the column names on. Look at the DBD::CSV docs. Your columns should be set like so:
    $dbh->{'csv_tables'}->{'export_list'}={ 'sep_char' => "|", 'col_names' => [qw(timestamp email name address city state zip)]};
    Also, execute returns no useful information on a select statement, so there is no point in saving its return value. On a non-select statement (e.g. update, delete), it returns the number of rows affected.

    And your die() statement is useless since you have RaiseError set. If there is a DBI error, DBI will execute a die() on its own before you ever get to that die statement.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://139513]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (5)
As of 2024-04-23 21:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found