PHP:¿Cómo evitar guardar registros duplicados en mi BD?

De Foros del Web

Siguiendo estos pasos:

1.Obtener los datos que se quieren guardar.

2.Buscarlos en la Base de Datos.

3.Ver si hubo coincidencias. Para esto se usa la función mysql_num_rows() que devuelve el número de resultados de una consulta.

a.Si: Evita que se guarde el registro

b.No: Guarda...

Código PHP:

<?php 
/* Para este código (simplemente ilustrativo) suponemos se recive un formulario dónde se ingresó un "usuario" y un "password" para ser agregados en la BD. 
Queremos evitar haya 2 usuarios iguales. 
 
Nuestra Tabla tendría que tener 3 campos: 
                     - id (INT autonumerico) 
                     - usuario (VACHAR) 
                     - password (VACHAR) 
*/ 
 
// Paso 1: Recibimos el formulario: 
$user= $_POST['user']; 
$password= md5($_POST['password']); // www.php.net/md5 
 
// Obviamente conectamos 
mysql_connect("servidor", "usuario", "contraseña"); 
mysql_select_db("nombre_dela_BD"); 
 
// Paso 2: Hacemos la consulta a la Tabla por el usuario 
$busqueda= mysql_query("SELECT usuario FROM tabla WHERE usuario='$user'"); 
 
 
// Paso 3: vemos si hubo coincidencias 
if(mysql_num_rows($busqueda)>0) { // ó " !=0 " como se quiera ver 
      // Inciso a:  
      echo "El nombre de usuario no se encuentra disponible. Por favor intente con otro.<br>"; 
      echo "<a href=\"javascript:history.back()\">Regresar</a>"; 
} else { 
      // Inciso b: 
      mysql_query("INSERT INTO tabla(usuario, password) VALUES ('$user', '$password')"); 
      echo "$user ha sido registrado."; 
} 

Igual faltarían cosas como valiaciones y demás, pero son otros temas.


--jam1138 04 Ago 2005

Este artículo es parte de las FAQs de PHP y el Manual de PHP.

Herramientas personales