Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

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/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
Node Status?
node history
Node Type: note [id://139513]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (7)
As of 2018-07-18 11:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?















    Results (389 votes). Check out past polls.

    Notices?