Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

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

by peppiv (Curate)
on Jan 17, 2002 at 18:40 UTC ( #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/ 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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://139513]
[submersible_toast er]: Padre
[submersible_toast er]: eh - this is not the search box thankyou safari

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (5)
As of 2018-04-22 11:45 GMT
Find Nodes?
    Voting Booth?