Cita: Ahora bien, con el segundo error, ahi si no te comprendo mucho, porque yo hago un if, si ya existe el nombre en la base de datos, y si no, entonces que si me inserte los datos, asi:
Si, pero no estás considerando que pueda haber ningún otro tipo de factor, y eso no es correcto.
Podría suceder simplemente que se perdiera la conexión con la base justo en ese momento, por ejemplo. O bien que la tabla estuviese siendo usada o bloqueada por otro proceso.
La idea es que un fallo puede generarse también por problemas no debidos a tus datos, pero eso no lo podrías detener si no administras las excepciones de la base.
Las buenas practicas dicen que SIEMPRE se valida cualquier ejecución que apunte a un servicio externo a la aplicación, como es el caso de una base de datos. No te olvides que MySQL no está integrado con PHP, por lo que sigue siendo un servicio diferente.