Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Saber si existe un registro con un UPDATE

Estas en el tema de Saber si existe un registro con un UPDATE en el foro de Bases de Datos General en Foros del Web. Buenas a todos, mi duda es si hay alguna manera sencilla de que si intento actualizar un registrio con un UPDATE y este no existe ...
  #1 (permalink)  
Antiguo 25/06/2010, 12:01
Avatar de Neldor  
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 3 meses
Puntos: 1
Saber si existe un registro con un UPDATE

Buenas a todos, mi duda es si hay alguna manera sencilla de que si intento actualizar un registrio con un UPDATE y este no existe me haga un INSERT, he probado con el siguiente código:
Código PHP:
mysql_query("UPDATE tabla SET campo='valor' WHERE id='$id'");
if(
mysql_affected_rows()==0){
  
mysql_query("INSERT INTO tabla (campo1,campo2) VALUES ('valor1','valor2')")

Este código me funciona con una excepción, que el valor que se quiera actualizar sea el mismo que ya existe en el registro con lo cual me devuelve que no se ha modificado nada y por tanto me añade duplica el registro.

¿Alguna idea? Muchas gracias.

Última edición por Neldor; 28/06/2010 a las 04:08
  #2 (permalink)  
Antiguo 25/06/2010, 13:02
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: Saber si existe un registro con un UPDATE

Código MySQL:
Ver original
  1. REPLACE INTO tabla (campo1,campo2) VALUES ('valor1','valor2')
El problema es que tienes los mismos requisitos de un insert: Poner todos los campos NOT NULL...
__________________
¿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: affected, insert, mysql, php, update
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 05:04.