¿Como comprobar si un email ya se encuentra en una base de datos con PHP ?

Wocker

Épsilon
Social Media
Verificación en dos pasos desactivada
Desde
31 May 2011
Mensajes
923
Hola Betas, nuevamente les vengo a pedir ayuda con un script en PHP que estoy desarrollando junto a otra persona y necesito saber que como si el siguiente código podemos hacer una consulta a la base de datos MySql para saber si el email ya se encuentra en la base de datos y le devuelva un mensaje de error al usuario:
PHP:
<?php
include('validate.php');
//Validar campos
$error = false;
$email = $_POST['email'];
if(!$email) {
	//Email se envio en blanco
	$error = true;
}

if(!check_email_address($email)) {
	//Email no tiene formato correcto
	echo "<h1>El email no cuenta con un formato correcto</h1><br><h2>Ejemplo: Correo@dominio.com</h2>";
	$error = true;
}


if($error) {
	//Hubo un error
}
else {
	$link = mysql_connect("localhost","base","contrasena");
	if (!$link) {
		die('Could not connect: ' . mysql_error());
	}
	$db_selected = mysql_select_db("base",$link);
	if (!$db_selected) {
		die ('Can\'t use foo : ' . mysql_error());
	}

	$query = sprintf("INSERT INTO suscriptores (email) VALUES ('%s')", mysql_real_escape_string($email));
	mysql_query($query,$link);
	if(mysql_num_rows($query)){ 
        echo '<h1>El email ya se encuentra registrado<h1>';
	// Ahora comprobaremos que todo ha ido correctamente
	$my_error = mysql_error($link);

	if(!empty($my_error)) {

	echo "<h1>Error, no se pudo conectar al servidor, porfavor intentelo nuevamente</h1>";

	} else {

	header('Location: http://locahost/gracias');
	} 
	mysql_close($link);
}
?>
Saludos y gracias de antemano por su ayuda :)
 
Última edición:

BeatPlus

Alfa
Verificación en dos pasos desactivada
Desde
22 Ene 2012
Mensajes
16
Siempre puedes hacer que la columna "email" sea única, es decir, sea la predeterminada así no se podrán insertar dos enlaces y a dará error. Si no sabes como se hace te explico.
 

Night

Beta
Verificación en dos pasos desactivada
Desde
13 Oct 2011
Mensajes
59
Edad
24
La manera que yo uso es hacer algo como lo siguiente:
PHP:
$email = 'email_elegido@blah';
$query = mysql_query('SELECT COUNT `email` AS `total` FROM `suscriptores` WHERE `email`='.$email;
$result = mysql_fetch_assoc($query);
if ($result['total'] > 0)
{
// Ya está el email
}
else
{
// No está
}
O si no también de la siguiente manera: (que creo que es más rápida)
PHP:
$email = 'email_elegido@blah';
$query = mysql_query('SELECT `email` FROM `suscriptores` WHERE `email`='.$email.' LIMIT 1');
if (mysql_num_rows($query) > 0)
{
// Ya está el email
}
else
{
// No está
}
 

Arriba