Tengo una tabla MySQL que tiene un campo para direcciones de correo electrónico que se define como único. Para este ejemplo, digamos que todo lo que hace mi formulario es permitir que un usuario inserte su dirección de correo electrónico en la tabla.comprobar entrada duplicada vs uso PDO errorInfo resultado
Dado que el campo del correo electrónico es único, la consulta debería fallar si intentan ingresar el mismo correo electrónico dos veces. Tengo curiosidad acerca de las concesiones entre los dos escenarios:
1) Ejecute una declaración rápida SELECT
antes de realizar la inserción. Si la selección arroja resultados, informe al usuario y no ejecute la instrucción INSERT
.
2) ejecuta la instrucción INSERT
, y compruebe si hay un error de entrada duplicada
// snippet uses PDO
if (!$prep->execute($values))
{
$err = $prep->errorInfo();
if (isset($err[1]))
{
// 1062 - Duplicate entry
if ($err[1] == 1062)
echo 'This email already exists.';
}
}
También, por favor suponer el uso normal, lo que significa que las entradas duplicadas deben ser mínimos. Por lo tanto, en el primer escenario, obviamente tiene la sobrecarga de ejecutar una consulta adicional para cada inserción, mientras que en el segundo depende del manejo de errores.
Además, tengo curiosidad por escuchar ideas sobre el estilo de codificación. Mi corazón dice '¡Sé un programador defensivo! ¡Comprueba los datos antes de insertarlos! mientras mi cerebro dice 'Hmmm, tal vez sea mejor dejar que MySQL se encargue de verificar los datos por ti'.
EDIT - Tenga en cuenta que esto no es una pregunta "¿Cómo hago esto?" Sino una pregunta "¿Por qué debería hacer esto de una manera particular?". El pequeño fragmento de código que incluí funciona, pero lo que me interesa es la mejor manera de resolver el problema.
¿Has pensado en utilizar 'Exception'? – Leri
¿En cuanto a esto? Por supuesto que manejo excepciones, pero a menos que me falta algo, el manejo de excepciones está fuera del alcance de mi pregunta. – JoshBramlett