Foros del Web » Programando para Internet » PHP »

update y mysql_affected_rows()

Estas en el tema de update y mysql_affected_rows() en el foro de PHP en Foros del Web. Hola!! Estoy realizando un formulario y cuando envío la info para realizar el INSERT, la info se guarda sin problemas y la variable en la ...
  #1 (permalink)  
Antiguo 19/06/2008, 06:05
 
Fecha de Ingreso: noviembre-2006
Ubicación: Alicante
Mensajes: 107
Antigüedad: 17 años, 5 meses
Puntos: 0
update y mysql_affected_rows()

Hola!!

Estoy realizando un formulario y cuando envío la info para realizar el INSERT, la info se guarda sin problemas y la variable en la que almaceno mysql_affected_rows() tiene valor 1.

Si realizo el UPDATE modificando algunos campos ocurre lo mismo que lo que explico arriba, pero si realizo el UPDATE sin modificar ningún campo, la variable en la que almaceno mysql_affected_rows() tiene valor 0 y supongo que no se han guardado los cambios porque la nueva información es igual al anterior registro.

Esta variable la utilizo para para informar si los cambios se han realizado correctamente, y al ser ese valor 0 en ese caso, se muestra el detalle de que se ha producido un error.

Sabe alguién como saber de que no se han realizado los cambio porque la información es la misma??

Saludos.
  #2 (permalink)  
Antiguo 19/06/2008, 09:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: update y mysql_affected_rows()

Hola lagunafmr,

Ese comportamiento es natural, ya que affected_rows te devuelve la cantidad de filas afectadas por una consulta.

Ahora no se si hayas leído de SQL pero es muy costoso (a nivel procesador/recursos) enviar un UPDATE que no afecta valores, por lo que tu mejor opción es hacer un SELECT antes de enviar los datos, y comprobar que datos son diferentes, si ves que todos son iguales entonces muestras un mensaje de que no hay cambios, y si no solo envías tu UPDATE pero solo de una o dos columnas, no de todo el set completo.

Saludos.
  #3 (permalink)  
Antiguo 20/06/2008, 01:28
 
Fecha de Ingreso: noviembre-2006
Ubicación: Alicante
Mensajes: 107
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: update y mysql_affected_rows()

Hola GartorV!!!

Gracias por la respuesta.

Ese proceso que comentas es correcto y me parece bastante 'ortodoxo' a la hora de trabajar.

Conseguí lo que buscaba por medio de la función mysql_info() formateando la cadena y quedándome con los valores de Changed. Esa función muestra la siguiente cadena para la sentencia UPDATE.

Código HTML:
UPDATE
String format: Rows matched: 65 Changed: 65 Warnings: 0
Código PHP:

$info 
=  mysql_info();
$info substr($infostrpos($info'Changed:'), strpos($info'W') - strpos($info'Changed:') - 2);
$info substr($infostrpos($info' ') + 1);
    
if (
$info != '')
    
$rows 1
De momento me ha servido pero creo que me paso a lo que tú comentas por lo menos en un par de tablas pequeñas.

Saludos y gracias por la ayuda.
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 10:18.