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.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
