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

Problema con UPDATE

Estas en el tema de Problema con UPDATE en el foro de Mysql en Foros del Web. Buenas gente tengo un problema con una de las tablas de mi base de datos, ya he intentado casi de todo asi que recurro al ...
  #1 (permalink)  
Antiguo 03/02/2011, 05:58
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Problema con UPDATE

Buenas gente tengo un problema con una de las tablas de mi base de datos, ya he intentado casi de todo asi que recurro al foro:

Mi problema es que al hacer un UPDATE set reproducciones=reproducciones+1 se suman 7 en lugar de 1, he probado aver si era cosa de la clase que uso para las conexiones a BBDD pero esta todo correcto ya que usando la funcion propia de PHP mysql_query hace exactamente lo mismo.

El campo en MySQL es un INT(11) por defecto.

Si reproducciones en la DB vale 0, lo hace bien, en cuanto el valor cambia (Positiva o negativamente) se suman 1+6, es decir, la primera vez que se ejecuta la consulta, el campo vale 1, la segunda 8, la tercera 15, la cuarta 22, y así sucesivamente.

¿Alguien sabe porque puede ser?

Esta es mi SQL
Código PHP:
Ver original
  1. 'UPDATE '._db_prefix.'videos SET reproducciones=reproducciones+1 WHERE id="'.$_REQUEST['id_video'].'" LIMIT 1'

Y en MySQL el campo reproducciones de dicha tabla es:
reproducciones int(11)
  #2 (permalink)  
Antiguo 03/02/2011, 07:35
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Problema con UPDATE

Sigo haciendo pruebas, esta vez he intentado hacerlo de manera un tanto rudimentaria, sacando previamente el dato y despues insertarlo sumandole uno mediante querys a BD.

Hace exactamente lo mismo.

Y un apunte curioso, hago el UPDATE justo antes e hacer la query de mostrar los datos, cuando muestra los datos, los muestra bien, pero si lo miro en la DB sale con un +7.

Resumiendo, al actualizar el dato de reproducciones de manera automatica con SQL se suman 1 (Dato que pongo yo) +6 (Que no se de donde sale).

Intentando sacar primero el dato, sumandole uno y posteriormente meterlo en la DB tambien hace lo mismo.

La SQL de actualizacion la hago exactamente antes de la query para seleccionar los datos del registro. Me muestra el registro como tocaria, con un +1, aunque si tras cargar la página miro la DB desde PhpMyAdmin me sale un resultado distinto.
  #3 (permalink)  
Antiguo 03/02/2011, 09:42
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Problema con UPDATE

Hola bNd170... la sentencia no tienen nada de extraño, hice algunas pruebas y funciona perfectamente.

Código MySQL:
Ver original
  1. mysql> create table `pruebas`.`videos` (`id_video` int UNSIGNED NOT NULL AUTO_IN
  2. CREMENT , `descripcion` varchar(50) NOT NULL,  `reproducciones` int UNSIGNED NOT
  3.  NULL DEFAULT '0', PRIMARY KEY (`id_video`));
  4. Query OK, 0 rows affected (0.05 sec)
  5.  
  6. mysql> insert into `pruebas`.`videos` (descripcion) values ('video uno');
  7. Query OK, 1 row affected (0.02 sec)
  8.  
  9. mysql> select * from `pruebas`.`videos`;
  10. +----------+-------------+----------------+
  11. | id_video | descripcion | reproducciones |
  12. +----------+-------------+----------------+
  13. |        1 | video uno   |              0 |
  14. +----------+-------------+----------------+
  15. 1 row in set (0.00 sec)
  16.  
  17. mysql> update `pruebas`.`videos` set reproducciones = reproducciones + 1 where id_video = 1;
  18. Query OK, 1 row affected (0.01 sec)
  19. Rows matched: 1  Changed: 1  Warnings: 0
  20.  
  21. mysql> select * from `pruebas`.`videos`;
  22. +----------+-------------+----------------+
  23. | id_video | descripcion | reproducciones |
  24. +----------+-------------+----------------+
  25. |        1 | video uno   |              1 |
  26. +----------+-------------+----------------+
  27. 1 row in set (0.02 sec)
  28.  
  29. mysql> update `pruebas`.`videos` set reproducciones = reproducciones + 1 where id_video = 1;
  30. Query OK, 1 row affected (0.01 sec)
  31. Rows matched: 1  Changed: 1  Warnings: 0
  32.  
  33. mysql> select * from `pruebas`.`videos`;
  34. +----------+-------------+----------------+
  35. | id_video | descripcion | reproducciones |
  36. +----------+-------------+----------------+
  37. |        1 | video uno   |              2 |
  38. +----------+-------------+----------------+
  39. 1 row in set (0.00 sec)
  40.  
  41. mysql> drop table `pruebas`.`videos`;
  42. Query OK, 0 rows affected (0.03 sec)

Revisa que no tengas ningún trigger o algún constraint en tu tabla que pudiera estar modificando el valor del campo al momento de hacer la actualización, o que no tengas algún bucle que se esté repitiendo n número de veces. Es lo único que se me ocurre.

Saludos y espero que encuentres cual es el problema.
Leo.
  #4 (permalink)  
Antiguo 12/02/2011, 09:00
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Problema con UPDATE

He seguido haciendo pruebas y he constatado que el problema reside en el navegador.

Usando Google Chrome, suma 1.
Usando Mozilla Firefox suma 7.

Etiquetas: 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 20:12.