Hi all-
I'm attempting to loop thru an input file, executing a SELECT query with the value from each line. The script works for the first iteration, and then gives these error messages:

DBD::mysql::st fetchrow_hashref failed: fetch() without execute() at ./describe_skus.pl line 27, <INFILE> line 2190. Use of uninitialized value in print at ./describe_skus.pl line 27, <INFILE> line 2190. Use of uninitialized value in print at ./describe_skus.pl line 27, <INFILE> line 2190. Use of uninitialized value in print at ./describe_skus.pl line 27, <INFILE> line 2190. Use of uninitialized value in print at ./describe_skus.pl line 27, <INFILE> line 2190.

(INFILE line 2190 is the last line.)
Here's my script:

#!/usr/bin/perl -w
use strict;
use DBI;

# purpose: To take sku numbers from a text file, "no-imgs.txt",
# and print out their database descriptions, to a separate text file, "need-images.txt".

open INFILE, "no-imgs.txt" or die "Input file failed to open: $!\n";
open OUTFILE, "> need-images.txt" or die "Output filehandle not open: $!\n";
my @nums = <INFILE>;

my $dbh=DBI->connect('dbi:mysql:productdb','script','') || die "Error connecting to database: $DBI::errstr\n";

my $query2 = qq{SELECT `sku`, `title`, `vendor_stock_no`, `vendor_id` FROM `products` WHERE `sku`=?};

for my $num (@nums) {
   last unless $num; #exit at end-of-input-file
   next if $num =~ /^\s*\t*\n$/;  # to skip over blank lines
   $num =~ s/^\s+//; # delete leading spaces
   chomp $num;
my $sth2= $dbh->prepare($query2) || die "Prepare failed: $DBI::errstr\n";
   $sth2->execute ("$num") || die "Couldn't execute query: $DBI::errstr\n";

   while ((my $ref) = $sth2 ->fetchrow_hashref("$num")) {
       print OUTFILE "sku, \t title, \t vendor_stock_no, \t vendor_id \n",
$ref->{sku}, $ref->{title}, $ref->{vendor_stock_no}, $ref->{vendor_id};
   }
   $sth2->finish ();
}

$dbh->disconnect || die "Failed to disconnect\n"; close OUTFILE or die "cannot close output file need-imgs.txt: $!";
#End

Thanks in advance for your suggestions.
John



--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to