in reply to Strange problem with DBI placeholders
Set the RaiseError attribute on the connect, then you don't have to put 'or die $DBI::errstr' after everything, and it will check for errors on every DBI function, even the execute() where you are not checking for errors.