in reply to Re^3: Use of uninitialized value in join or string
in thread Use of uninitialized value in join or string

Thank you hippo for pointing this out, however, the snippet I've inserted into my recent post, is the piece of code, that was removed and replaced by the code, that roboticus kindly suggested to me in his post.

So instead of:

my $SQL = "INSERT INTO $table VALUES (" . join(",", map { "?" } $csv->fields) . ")"; $prep = $db->prepare($SQL) or die "..."; while (my $row = $csv->getline($fh)) { $prep->execute($csv->fields); }

I used:

my $SQL = "INSERT INTO $table VALUES (" . join(",", map { "?" } $csv->fields) . ")"; $prep = $db->prepare($SQL) or die "Cannot prepare database"; while (my $row = $csv->getline($fh)) { $prep->execute($csv->fields); }

It does not change the fact, that I still struggle with this new error:

DBD::mysql::st execute failed: Column count doesn't match value count at row 1 at ./test.pl line 85, <$fh> line 2.

Replies are listed 'Best First'.
Re^5: Use of uninitialized value in join or string
by hippo (Archbishop) on Jan 29, 2014 at 13:56 UTC

    Sorry, I misread your post. Your placeholders there look OK at first pass.

    So, for starters I would use @$row as the argument to execute and then I would compare the number of fields in $row with the number of fields in your database for $table and see where the mismatch occurs. HTH.