You might want to replace your $sth->execute() with the following: unless ($sth->execute()) { die $dbh->errstr() } This will give you an error if your sql statement is bad for some reason.
If you're not already doing it try: use CGI::Carp qw(fatalsToBrowser); This will send all your errors to the browser. Remember to remove this line before the script goes live.