La forma más rápida de verificar registros preexistentes antes de insertar [mysql_errno ()]

Mi pregunta utilizará correos electrónicos como ejemplo, pero esto podría aplicarse a cualquier cosa.

Normalmente, antes de registrar un nuevo usuario (incluida la inserción de su correo electrónico), verifico si su correo electrónico ya existe en la base de datos, algo como esto:

$result = mysql_query("SELECT * FROM Users WHERE email = '".mysql_real_escape_string($email)"';");
if(!$result)
{
    die(mysql_error());
}

if(mysql_num_rows($result) > 0)
{
    die('<p>Email already in DB. <a....>Recover Email</a></p>');
}
else
{
    //insert new user data into Users table
}

esde que hubiera restringido laemail campo en mi tabla de usuarios para serUNIQUE de todos modos, ¿no sería más rápido intentar insertar primero y si falla, verifique el error? Algo como esto

$result = mysql_query(...);//insert new user data into Users table
if(!$result)
{
    if(mysql_errno()==$insert_unique_error)
    {
        $error = '<p>Email already in DB. <a....>Recover Email</a></p>';
    }
    else
    {
        $error = mysql_error();
    }
    die($die_str);
}

El problema es que no séqué$insert_unique_error debiera se. Estos son los únicos códigos de errorLo podría encontra:

Los primeros dos caracteres de un valor SQLSTATE indican la clase de error:

Class = '00' indica éxito.

Class = '01' indica una advertencia.

Class = '02' indica "no encontrado". Esto es relevante dentro del contexto de los cursores y se utiliza para controlar lo que sucede cuando un cursor llega al final de un conjunto de datos. Esta condición también ocurre para las instrucciones SELECT ... INTO var_list que no recuperan filas.

Class> '02' indica una excepción.

Respuestas a la pregunta(4)

Su respuesta a la pregunta