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

Sobreescribir datos

Estas en el tema de Sobreescribir datos en el foro de Mysql en Foros del Web. Buenas! Tengo un programita en php/mysql que me carga X filas desde una BD, algunas me las devuelve vacia. El programa en cuestión, cuando la ...
  #1 (permalink)  
Antiguo 03/11/2011, 11:37
 
Fecha de Ingreso: abril-2011
Mensajes: 95
Antigüedad: 13 años
Puntos: 1
Sobreescribir datos

Buenas!
Tengo un programita en php/mysql que me carga X filas desde una BD, algunas me las devuelve vacia.
El programa en cuestión, cuando la fila tiene datos me los muestra, y cuando no los tiene me da la opción de insertarlos con "insert into".
La cuestión viene al editar los datos, si quiero editar un dato que ya estaba no me vale el "insert into", tendría que usar el "UPDATE" y eso no me vale, ya que necesito usar el insert into.
Como puedo hacer para que el "Insert into" me sobreescriba los registros?

No se si me he explicado bien...

Saludos
  #2 (permalink)  
Antiguo 03/11/2011, 11:41
 
Fecha de Ingreso: junio-2007
Ubicación: Buenos Aires, Argentina
Mensajes: 262
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Sobreescribir datos

Me temo que insert es para insertar y update para modificar. En otras palabras, no es posible usar un insert para actualizar un registro. Tampoco debiera sucederte que el insert sobreescriba valores, ya que, justamente, siempre inserta un nuevo registro.

Saludos!
Pablo
__________________
Moebius Digital | La pieza que faltaba
Diseño web | Web hosting
  #3 (permalink)  
Antiguo 03/11/2011, 11:51
 
Fecha de Ingreso: abril-2011
Mensajes: 95
Antigüedad: 13 años
Puntos: 1
Respuesta: Sobreescribir datos

Y como podria hacer para que en un caso me use un UPDATE y otra el INSERT INTO?
Que en el caso de que el insert into diera error por duplicacion de registros, me hiciera un update
  #4 (permalink)  
Antiguo 03/11/2011, 11:56
 
Fecha de Ingreso: junio-2007
Ubicación: Buenos Aires, Argentina
Mensajes: 262
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Sobreescribir datos

En vez de esperar un error por un insert fallido, yo dividiría la cuestión en:

1. Me fijo si el registro existe
2. Si existe, actualizo
3. Si no existe, inserto

Pero, por supuesto, esto se resuelve por programación y no desde MySQL.

Saludos!
Pablo
__________________
Moebius Digital | La pieza que faltaba
Diseño web | Web hosting
  #5 (permalink)  
Antiguo 03/11/2011, 12:28
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Sobreescribir datos

Hola fdez87:

Podrías utilizar la cláusula ON DUPLICATE KEY del insert para actualizar los registros en caso de que la llave ya exista en la tabla. Sería más o menos así:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE TuTabla (id INT, descripcion VARCHAR(20), PRIMARY KEY (id));
  2.  
  3. Query OK, 0 rows affected (0.08 sec)
  4.  
  5. mysql> INSERT INTO TuTabla VALUES (1, 'uno'), (2, 'dos');
  6. Query OK, 2 rows affected (0.05 sec)
  7. Records: 2  Duplicates: 0  Warnings: 0
  8.  
  9. mysql> SELECT * FROM TuTabla;
  10. +----+-------------+
  11. | id | descripcion |
  12. +----+-------------+
  13. |  1 | uno         |
  14. |  2 | dos         |
  15. +----+-------------+
  16. 2 rows in set (0.00 sec)
  17.  
  18. mysql> #Hacemos otro insert con la cláusula ON DUPLICATE KEY
  19. mysql> INSERT INTO TuTabla VALUES (1, 'uno corregido'), (3, 'tres')
  20.     -> ON DUPLICATE KEY UPDATE descripcion = 'uno corregido';
  21. Query OK, 3 rows affected (0.05 sec)
  22. Records: 2  Duplicates: 1  Warnings: 0
  23.  
  24. mysql> SELECT * FROM TuTabla;
  25. +----+---------------+
  26. | id | descripcion   |
  27. +----+---------------+
  28. |  1 | uno corregido |
  29. |  2 | dos           |
  30. |  3 | tres          |
  31. +----+---------------+
  32. 3 rows in set (0.00 sec)

Observa que como el registro 1 ya existía en la tabla entonces actualiza el campo descripción, como el registro 3 no existe entonces si se inserta en la tabla.

Dale un vistazo para ver si te sirve.

Saludos
Leo.
  #6 (permalink)  
Antiguo 03/11/2011, 13:13
 
Fecha de Ingreso: junio-2007
Ubicación: Buenos Aires, Argentina
Mensajes: 262
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Sobreescribir datos

Genial, leonardo_josue. No sabía de ese comando. Todos los días se aprende algo nuevo :)
__________________
Moebius Digital | La pieza que faltaba
Diseño web | Web hosting
  #7 (permalink)  
Antiguo 03/11/2011, 13:35
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Sobreescribir datos

Esa es la idea de los foros... tratar de ayudar y seguir aprendiendo.

Saludos
Leo.

Etiquetas: php, registros, sql
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 19:34.