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.