Foros del Web » Programando para Internet » PHP »

Ignorar un error que lance el SQL al hacer una sentencia

Estas en el tema de Ignorar un error que lance el SQL al hacer una sentencia en el foro de PHP en Foros del Web. Buen dia amigos quisiera me ayudara, les explico que es lo que pasa. Tegno una tabla que esta compuesta por tres llaves, una de la ...
  #1 (permalink)  
Antiguo 25/02/2013, 12:00
 
Fecha de Ingreso: julio-2012
Ubicación: Nómoda como un ave
Mensajes: 61
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Ignorar un error que lance el SQL al hacer una sentencia

Buen dia amigos quisiera me ayudara, les explico que es lo que pasa.

Tegno una tabla que esta compuesta por tres llaves, una de la llave de la table y dos foraneas. estoy trabajando con php, al hacer un insert en la tabla con el mismo numero que ya existe (llave primaria) me arroja un error:
Cita:
Warning: mssql_query() [function.mssql-query]: message: Violation of PRIMARY KEY constraint 'PK_Registro_Existenci'. Cannot insert duplicate key in object 'dbo.Registro_Existencia'. (severity 14) in C:\xampp\htdocs\Garantias\enviar.php on line 140

Warning: mssql_query() [function.mssql-query]: Query failed in C:\xampp\htdocs\Garantias\enviar.php on line 140

Warning: mssql_query() [function.mssql-query]: message: Violation of PRIMARY KEY constraint 'PK_Registro_Existenci'. Cannot insert duplicate key in object 'dbo.Registro_Existencia'. (severity 14) in C:\xampp\htdocs\Garantias\enviar.php on line 140

Warning: mssql_query() [function.mssql-query]: Query failed in C:\xampp\htdocs\Garantias\enviar.php on line 140
el problema aqui que ese dato algunas veces se repetira pero no quiero que ese error me salga, quisiera saber como burlar ese error y que siempre me haga el insert en la DB(sql)

Muchas gracias de antemano.

Última edición por Papito18; 25/02/2013 a las 12:03 Razón: Ignorar un error lanzado por sql al ejecutar una sentencia
  #2 (permalink)  
Antiguo 25/02/2013, 12:06
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Ignorar un error que lance el SQL al hacer una sentencia

agrega una @ antes de poner la funcion, por ejemplo

@mysqli_query(....

eso omite el error :)
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #3 (permalink)  
Antiguo 25/02/2013, 13:27
 
Fecha de Ingreso: julio-2012
Ubicación: Nómoda como un ave
Mensajes: 61
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Ignorar un error que lance el SQL al hacer una sentencia

Chevere, Gracias!
  #4 (permalink)  
Antiguo 25/02/2013, 13:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Ignorar un error que lance el SQL al hacer una sentencia

Cita:
el problema aqui que ese dato algunas veces se repetira pero no quiero que ese error me salga, quisiera saber como burlar ese error y que siempre me haga el insert en la DB(sql)
Disculpa, pero lo que te propones es un absurdo.
El mensaje especifica que estás intentando hacer algo que la base de datos no te permitirá hacer. No se puede insertar dos veces un mismo valor de PK en ningún DBMS, no importa lo que hagas. Eso es parte de las reglas básicas.
Simplemente no puedes burlar las restricciones de pK en una base de datos.
Si tienes constantemente ese mensaje, o la sentencia INSERT está mal escrita o bien tienes datos-basura, no validados o incorrectos. Y poner basura en la base, no es una opción. ¿No te parece?
Lo máximo que te admite un DBMS es:
1) Ignorar el INSERT y no hacer nada (INSERT IGNORE INTO...).
2) realizar algo si la clave está duplicada (... ON DUPLICATE KEY...)
Pero lo que bajo ninguna circunstancia debes hacer es pretender insertar con fórceps algo que la base no te dejará y no tiene sentido hacer.

El "@" que te proponen en la sentencia PHP lo único que hace es eliminar la respuesta, el mensaje de error, pero no significa que la sentencia se ejecuta, sino que si hay un error ni te enteras.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: registro, sentencia, sql, tabla
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 23:47.