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

UPDATE sin cambios

Estas en el tema de UPDATE sin cambios en el foro de Mysql en Foros del Web. Hola, Necesito que me aclaren una duda que tengo sobre el UPDATE y que me ocurre cuando guardo los datos de un formulario en PHP. ...
  #1 (permalink)  
Antiguo 14/11/2008, 06:45
 
Fecha de Ingreso: noviembre-2006
Ubicación: Alicante
Mensajes: 107
Antigüedad: 17 años, 5 meses
Puntos: 0
UPDATE sin cambios

Hola,

Necesito que me aclaren una duda que tengo sobre el UPDATE y que me ocurre cuando guardo los datos de un formulario en PHP.

Si en el formulario tengo los campos con los datos leídos para ese registro y realizo una modificación en algún campo, cuando lo envío y guardo se realiza sin problemas.

Pero cuando guardo los campos del formulario sin haber modificado ninguno, obtengo de mysql por medio de la función de PHP mysql_affected_rows() que no se ha ejecutado ninguna consulta, devuelve 0.

Alguien podría explicar si es así, si estoy en lo cierto y si puede haber alguna forma de averiguar si no se ha ejecutado por ese motivo.

Saludos y gracias.
  #2 (permalink)  
Antiguo 15/11/2008, 19:25
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: UPDATE sin cambios

mmmmm.... tema interesante yo una vez me pregunte lo mismo, pero me parece que si no detecta cambios la consulta no se ejecuta. Asi que me parece que estas en lo cierto.
Saludos
__________________
->Aprender es un proceso que incluye el error..
  #3 (permalink)  
Antiguo 17/11/2008, 09:10
Avatar de Snd234  
Fecha de Ingreso: mayo-2007
Ubicación: Frente al PC
Mensajes: 413
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: UPDATE sin cambios

Cita:
Cuando se usa UPDATE, MySQL no actualizará las columnas donde el nuevo valor es el mismo al actual. Esto crea la posibilidad de que mysql_affected_rows() pueda no ser igual al número de filas encontradas, solo el número de filas que fueron literalmente afectadas por la sentencia.
Extraído textualmente desde la documentación de PHP.
__________________
KIBIT.cl
  #4 (permalink)  
Antiguo 19/11/2008, 11:17
 
Fecha de Ingreso: noviembre-2006
Ubicación: Alicante
Mensajes: 107
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: UPDATE sin cambios

Hola,

Gracias por las respuestas.

He leído un poco sobre la sentencia REPLACE y hecho unas pruebas, pero no me termina de convencer esta sentencia debido a que ha de borrar el registro antiguo y sustituirlo por el nuevo.

En las pruebas que he hecho, he insertado una cadena en un tipo numerico y no se ha borrado la fila antigua y tampoco se ha insertado la nueva ya que me ha saltado un error. Hasta ahí parece que todo correcto, pero parece un poco peligroso.

Necesito recoger el valor de mysql_affected_rows() en una variable para después tratarla de una forma u otra. Lo que deberé de hacer es comprobar todos los campos recibidos desde el formulario con los valores leídos de la tabla para ver que si han habido o no cambios en los datos y asignar a la variable de mysql_affected_rows() un valor superior a 0 si han habido cambios o no se ha realizado ninguno y 0 por si ha habido algún error.

Si creen que lo que digo en esa última parte se puede realizar de otra forma, sería de gran ayuda ya que tengo tablas con mas de 20 campos y comprobarlos todos uno por uno es un poco laborioso.

Saludos y gracias.
  #5 (permalink)  
Antiguo 19/11/2008, 18:56
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: UPDATE sin cambios

por que tanta vuelta??

Si mysql mysql_affected_rows() te devuelve 0 es decir que no hubo cambios, si te devuelve mas de cero quiere decir que si hubo cambios.

no le veo el sentido

Pero si de todas maneras lo deseas hacer, puedes hacer lo siguiente: primero guarda la info en un array y lo que recoges del fomulario lo metes en otro array, al final hacer una comparación de arrays y listo.

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #6 (permalink)  
Antiguo 20/11/2008, 02:31
 
Fecha de Ingreso: noviembre-2006
Ubicación: Alicante
Mensajes: 107
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: UPDATE sin cambios

Hola Genetix, gracias por la respuesta.

El motivo es porque si mysql_affected_rows() vale 0, realizo una tarea y si vale mas de 0 realizo otra.

Pero, el aporte de la comparación de los arrays es una buena idea, gracias por ello.

Saludos.
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 00:20.