While waswas-fng's correct suggestion to wrap $sth->execute in an eval will work, a more proper method is to check the results of the $dbh->prepare statement, and probably also check to make sure that the $dbh itself is connected to a database.
You should modify your code to look something like this:
$sth = $dbh->prepare($sql);
if (defined $sth and not defined $dbh->err) {
my $rv = $sth->execute();
# check for errors in the execute using $rv->errstr, etc.
}
else {
print STDERR "Unable to prepare: $dbh->errstr\n";
}
Additionally, in many cases, you probably don't even want to bother using prepare or execute, and should just go for the nice select* or do functions which take care of all of the nastiness for you. | [reply] [d/l] [select] |