Foros del Web » Programando para Internet » PHP »

Sentencia mysql

Estas en el tema de Sentencia mysql en el foro de PHP en Foros del Web. Hola compañeros! Una vez más acudo a vosotros, esta vez es porque busco una sentencia en mysql, la cuestión es que tengo un formulario para ...
  #1 (permalink)  
Antiguo 12/12/2004, 08:42
 
Fecha de Ingreso: octubre-2004
Mensajes: 168
Antigüedad: 19 años, 6 meses
Puntos: 0
Sentencia mysql

Hola compañeros!

Una vez más acudo a vosotros, esta vez es porque busco una sentencia en mysql, la cuestión es que tengo un formulario para insertar datos en mi bdd, y lo que quiero es primero comprobar que no se inserta de nuevo datos de alguien ya existente. Tengo un campo denominado DNI, que hace de campo clave,pero no quiero hacer una consulta comprobando que el DNI introducido no existe y posteriorme introducir los datos de esa persona, es decir hacer una consulta y luego una insercción, porque no me funciona correctamente y también porque me han dicho que es menos eficiente de esta forma, por lo que busco que se haga todo en una misma sentencia, alguien ¿sabe de qué manera se puede hacer? Gracias.
  #2 (permalink)  
Antiguo 12/12/2004, 13:07
 
Fecha de Ingreso: octubre-2004
Mensajes: 258
Antigüedad: 19 años, 6 meses
Puntos: 1
Hola, resuelvelo simple, mira, si el campo DNI es PRIMARY KEY lo que debes hacer siempre es un INSERT, si da error por duplicidad ahi tu ya sabes que existe!!! , sino da error, simplemente se inserto el nuevo registro.
De esta forma no necesitas consultar nada previamente!


Saludos
__________________
Salute !!!
RollBack
  #3 (permalink)  
Antiguo 12/12/2004, 13:20
 
Fecha de Ingreso: octubre-2004
Mensajes: 168
Antigüedad: 19 años, 6 meses
Puntos: 0
Mmm, si es evidente que tiene que ser PRIMARY KEY, pero como lo pongo con el phpMyAdmin porque es desde alli creo las tablas y no vi esa opción, por cierto si hay error como lo capturo, como se le indica al usuario que no es válido ese DNI?
  #4 (permalink)  
Antiguo 13/12/2004, 02:49
 
Fecha de Ingreso: octubre-2004
Mensajes: 258
Antigüedad: 19 años, 6 meses
Puntos: 1
Ok, veamos,

en phpmyadmin, haces click en la tabla! y te muestra inicialmente la estructura, mira abajo de la lista de los campos, que ahi tienes las primary key, unique, indice....., sino, has de cuenta que vas a editar un campo y mira a la derecha que tenes la opcion de decir si es unique, etc etc.

para capturar el error haces asi:

if (!mysql_query("insert into tabla values (1,2,3)"){
echo 'error'."<br>".mysql_error();
exit();
}

como veras, te pone el numero de error, creo que el de duplicidad es el 2606.

entonces para saber si fue error de duplicado podes emplearlo asi:

if (!mysql_query("insert into tabla values (1,2,3)"){
switch (mysql_error()) {
case 2606:
echo 'error de duplicado';
break;
default :
echo 'otro error';
}
exit();
}

en el primer if que te puse, ahi verias los numeros de errores, de ahi sacas los que quieres saber para ponerlo en el switch;

Salute !!!!
__________________
Salute !!!
RollBack
  #5 (permalink)  
Antiguo 13/12/2004, 15:56
 
Fecha de Ingreso: octubre-2004
Mensajes: 168
Antigüedad: 19 años, 6 meses
Puntos: 0
Ajá, lo he probado y funciona bien, pero he de decir, que con el primer if, no me sale ningún número sino que cuando meto un valor repetido me dice:
error
Duplicate entry '(Nombre de la entrada repetida)' for key 2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:11.