lo que pasa es que no detienes la ejecucion o desvias el flujo del programa en ningun lado, se supone que cuando sale un error deberia redireccionar(por ejemplo), cosa que tu no haces, esto valida bien todo pero, muestra los mensajes y sigue con las instrucciones que siguen abajo, que son las que meten los datos en la bd entre otras, metele algunos IF's y quizas una variable booleana que te sirva de indicador cuando se produzcan errores y estaria a punto

saludois