Foros del Web » Programando para Internet » PHP »

pdo exec()

Estas en el tema de pdo exec() en el foro de PHP en Foros del Web. Hola, esta sucediendo algo extraño.. Cuando hago un simple insert con pdo me lo inserta 2 veces al registro.. (Y déjenme que les aclare, NO ...
  #1 (permalink)  
Antiguo 26/05/2014, 19:46
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 9 años, 9 meses
Puntos: 6
pdo exec()

Hola, esta sucediendo algo extraño..

Cuando hago un simple insert con pdo me lo inserta 2 veces al registro..

(Y déjenme que les aclare, NO esta ingresando al método que hace el insert 2 veces)

Este es el método que hace el insert:

Código PHP:
Ver original
  1. public function addUserCheckin($UserId, $SucursalId) {
  2.         try {
  3.            
  4.              $sql = "INSERT INTO test(lala)VALUES('holaa')";
  5.  // die($sql);
  6.             $count = $this->pdodb->exec($sql);
  7.            
  8.            
  9.             //var_dump($count);
  10.            // $r=$this->pdodb->prepare($sql);
  11.  
  12.            // return $r->execute();
  13.          
  14.            
  15.         }catch(PDOException $ex) {
  16.             die("ERROR: ". $ex->getMessage());
  17.         }
  18.     }

Y esta es la estructura de dicha tabla:
Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `test` (
  2.   `lala` VARCHAR(20) NOT NULL
  3. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Tambien hice un die($sql) para ver como está formando la query, la copio y pego y al ejecutarla desde phpmyadmin, me inserta 1 registro (lo cual es lo correcto) pero cuando desde php llamo al metodo que hacer el insert, me inserta 2 registros!

No entiendo eso!


Saludos, y espero que alguien me ayude!
  #2 (permalink)  
Antiguo 26/05/2014, 20:44
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 12 años, 10 meses
Puntos: 292
Respuesta: pdo exec()

Cita:
Iniciado por juan_14nob Ver Mensaje
(Y déjenme que les aclare, NO esta ingresando al método que hace el insert 2 veces)
No aclares mas

Estas ejecutando eso dos veces.....
__________________
Salu2!
  #3 (permalink)  
Antiguo 26/05/2014, 21:37
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 9 años, 9 meses
Puntos: 6
Respuesta: pdo exec()

Cita:
Iniciado por Italico76 Ver Mensaje
No aclares mas

Estas ejecutando eso dos veces.....

En donde?
  #4 (permalink)  
Antiguo 26/05/2014, 21:46
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 12 años, 10 meses
Puntos: 292
Respuesta: pdo exec()

Muestra donde trabajas con addUserCheckin()
__________________
Salu2!
  #5 (permalink)  
Antiguo 26/05/2014, 23:03
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 9 años, 9 meses
Puntos: 6
Respuesta: pdo exec()

Código PHP:
Ver original
  1. function SendCkIn() {
  2.    
  3.     $Model = new Model();
  4.     $Model->addUserCheckin(219, 25);
  5.     exit;
  6.  
  7. }
  8.  
  9. SendCkIn();
  #6 (permalink)  
Antiguo 29/05/2014, 14:36
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 9 años, 9 meses
Puntos: 6
Respuesta: pdo exec()

Hola, pude encontrar la falla al final...

Mi código no esta nada mal. Ya que de tanto revisar y hacer pruebas todo funcionaba correctamente. no tenia doble instanciado el metodo .

EL PROBLEMA ES QUE MOZILLA FIREFOX ME RECARGA LA PAGINA AUTOMATICAMENTE . No entiendo por que pero es como que hace un reload y por ese motivo en la base de datos me estaba haciendo 2 insert.

Lo pude descifrar utilizando el debug de FirePHP.

ALGUIEN SABE POR QUE FIREFOX HACE ESTA "RECARGA"

Saludos!
  #7 (permalink)  
Antiguo 30/05/2014, 10:34
Avatar de haggenx  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 800
Antigüedad: 13 años
Puntos: 22
Respuesta: pdo exec()

haz que tu registro sea unico (llave) en tu bd, así no se podrá insertar dos veces.
  #8 (permalink)  
Antiguo 30/05/2014, 10:41
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 9 años, 9 meses
Puntos: 6
Respuesta: pdo exec()

Cita:
Iniciado por haggenx Ver Mensaje
haz que tu registro sea unico (llave) en tu bd, así no se podrá insertar dos veces.
Creo que no has leido el comenterio anterior..

Última edición por juan_14nob; 30/05/2014 a las 10:42 Razón: Correción
  #9 (permalink)  
Antiguo 30/05/2014, 13:51
Avatar de haggenx  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 800
Antigüedad: 13 años
Puntos: 22
Respuesta: pdo exec()

desconozco porque se carga doble (la recarga que mencionas), a veces no nos queda mas que recurrir a los "trucos" para arreglar un problema, no es el modo correcto, solo es una sugerencia
  #10 (permalink)  
Antiguo 31/05/2014, 08:30
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 9 años, 9 meses
Puntos: 6
Respuesta: pdo exec()

Cita:
Iniciado por haggenx Ver Mensaje
desconozco porque se carga doble (la recarga que mencionas), a veces no nos queda mas que recurrir a los "trucos" para arreglar un problema, no es el modo correcto, solo es una sugerencia
Es que en mi caso la tabla no necesita tener una clave única y no pienso modificar la estructura de mi base de datos por una falla externa y ajena a mi código

Por lo tanto, no puedo tomar como solución su sugerencia..

Lo que necesito saber es por qué firefox está cargandome 2 veces la misma página, pero no puedo abrir un nuevo post, porque el foro automáticamente me lo elimina porque las reglas no permiten

Saludos!!
  #11 (permalink)  
Antiguo 31/05/2014, 08:40
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Te pasa sólo en firefox?
  #12 (permalink)  
Antiguo 31/05/2014, 11:02
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 9 años, 9 meses
Puntos: 6
Respuesta: pdo exec()

Cita:
Iniciado por lolainas Ver Mensaje
Te pasa sólo en firefox?
Si.

Browser: Mozilla Firefox v 29.0
OS: Linux Ubuntu 12.04
  #13 (permalink)  
Antiguo 31/05/2014, 12:26
lolainas
Invitado
 
Mensajes: n/a
Puntos:
En un rato lo miraré en detalle a ver si veo algo, pero de momento he tirado esta busqueda rápida: 'php pdo insert 2 times firefox' y no eres el único:

http://stackoverflow.com/questions/5609713/mysql-inserting-records-twice-in-database

Más tarde si no das con ello seguimos.

Saludos.
  #14 (permalink)  
Antiguo 31/05/2014, 12:33
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Interesante este comentario en ese hilo:

'Sometimes, when you debug and refresh webpage after POST request (e.g. form submission) it sends data again. Maybe this is the trouble?'

Cuidado si refrescas justo donde te envían el POST

Etiquetas: pdo, registro, sql, tabla
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:02.