Foros del Web » Programando para Internet » PHP »

Problemas con update

Estas en el tema de Problemas con update en el foro de PHP en Foros del Web. Hola amigos, quisiera pedirles si me pueden ayudar con este código que estoy intentando realizar. Les cuento primero que nada que estoy trabajando con dos ...
  #1 (permalink)  
Antiguo 25/08/2014, 15:10
 
Fecha de Ingreso: septiembre-2008
Mensajes: 72
Antigüedad: 15 años, 7 meses
Puntos: 0
Exclamación Problemas con update

Hola amigos, quisiera pedirles si me pueden ayudar con este código que estoy intentando realizar. Les cuento primero que nada que estoy trabajando con dos bdd Postgre que se encuentran en distintos servidores. Deseo realizar el siguiente paso, Primero hago la consulta, si esto tiene datos, que inserte y una vez que realice esto poder actualizar un campo.

Código PHP:
Ver original
  1. include("include/conn.php"); //Conexión a una bdd
  2.  
  3.  
  4. pg_exec("begin");
  5. $do_commit=true;
  6.  
  7. if($do_commit){
  8.     $sql="select id, trato from ca where trato=1";
  9.     $result=pg_query($conn,$sql);
  10.     if($row=pg_fetch_array($result)){
  11.         $conn2=pg_connect("host=XXXX  port=XXX dbname=miBase user=miUser password=miPass"); //Conexión a mi segunda bdd
  12.         $sql2="insert into ffc(f_id, c_id, u, v, fecha, lonlat, texto, cc_id) values (1, 53, 'Test', 3, now(), '-33.9857541,-70.1204587', 'Test', 268)";
  13.         $result2=pg_query($conn2, $sql2);
  14.        
  15.     }
  16. }
  17.  
  18. if($do_commit){
  19.     if($row['trato']==1){
  20.         $sql3="update ca set trato=3 where id=".$row['id'];
  21.         $result3=pg_query($conn, $sql3);
  22.        
  23.     }
  24. }
  25.  
  26.  
  27.    
  28. if($do_commit){
  29.     pg_exec("COMMIT");
  30.     header("location: miArchivo.php");
  31.     exit();
  32. }
  33. if(!$do_commit){
  34.     pg_exec("ROLLBACK");
  35.     $_SESSION['pdata']=$_POST;
  36.     $_SESSION['errmesg']=$errmesg;
  37.     header("location: Error.php");
  38.     exit();
  39. }

El problema que tengo, es que al hacer la consulta me inserta todo bien correctamente, pero el update no me funciona, he intentado hacerlo de varias formas pero el trato nunca cambia, si me pudieran ayudar a ver mi error se los estare muy agradecido.

Muchas Gracias
  #2 (permalink)  
Antiguo 25/08/2014, 16:03
Avatar de toledo_nocturno  
Fecha de Ingreso: agosto-2011
Ubicación: Under the northen star
Mensajes: 86
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: Problemas con update

Muy buenas.

No le meto mucha mano a postgre desde php desde hace bastante tiempo, pero vayamos al lio:

En la consulta de la línea 8, del if de la 7 haces:
$sql="select id, trato from ca where trato=1";

Pero luego, en la línea 19 haces:
if($row['trato']==1){

Si ya sabes de antemano que va a estar a 1, ¿para qué comprobarlo? Entiendo que es ese update el que falla.
__________________
diseño web | Clan Rol
  #3 (permalink)  
Antiguo 25/08/2014, 16:11
 
Fecha de Ingreso: septiembre-2008
Mensajes: 72
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problemas con update

Exacto amigo, ese update me falla, le volvi a poner la condición para probar, pero no hay caso, supuestamente después de pedir que consulte por los trato=1, que me inserte, no logro actualizar, es más mi log de errores hace el proceso de actualizar, pero si reviso la bdd queda igual el trato en 1, si copio el update que imprimo, no tengo problemas en actualizarlo por consola, entonces voy a lo mismo, donde estoy fallando.

Gracias
  #4 (permalink)  
Antiguo 25/08/2014, 16:23
Avatar de toledo_nocturno  
Fecha de Ingreso: agosto-2011
Ubicación: Under the northen star
Mensajes: 86
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: Problemas con update

Buenas,

La primera consulta... ¿Te devuelve más de un resultado?
Y al llegar al update... ¿Estás seguro de que entra en ese if? Por descartar cosas, quiero decir, y ver si hay algo antes de entrar en el if, o ya dentro.
__________________
diseño web | Clan Rol
  #5 (permalink)  
Antiguo 25/08/2014, 16:38
 
Fecha de Ingreso: septiembre-2008
Mensajes: 72
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problemas con update

Solo me devuelve un resultado, y si, cuando llego al update llego con datos... Cambie el código nuevamente.

Código PHP:
Ver original
  1. if($do_commit){
  2.    
  3.     $sql="select id, trato from ca where trato=1";
  4.     $result=pg_query($conn,$sql);
  5.     if($row=pg_fetch_array($result)){
  6.         $id=$row['id_actualizacion'];
  7.     }
  8.        
  9.        
  10.      $conn2=pg_connect("host=XXXX  port=XXX dbname=miBase user=miUser password=miPass"); //Conexión a mi segunda bdd
  11.     $sql2="insert into ffc(f_id, c_id, u, v, fecha, lonlat, texto, cc_id) values (1, 53, 'Test', 3, now(), '-33.9857541,-70.1204587', 'Test', 268)";
  12.     $result2=pg_query($conn2, $sql2);
  13.     if(pg_affected_rows($result2)==0){
  14.         $do_commit=false;
  15.         $errmesg.="Error Inesperado.";
  16.     }
  17.    
  18.     $sql3="update ca set trato=3 where id=$id";
  19.     $result3=pg_query($conn, $sql3);
  20.     if(pg_affected_rows($result3)==0){
  21.         $do_commit=false;
  22.         $errmesg.="Error Inesperado.";
  23.     }
  24.    
  25. }

Sigo insistiendo que lo más curioso que me sucede, es que cuando imprimo el log, llegan todos los datos correctamente.... Pero no me cambia el update....

El código que mostraré es el que me da el log cuando termina el proceso.


Código PHP:
Ver original
  1. Consulta Uno: select id, trato from ca where estado=1
  2. Insertar:insert into ffc(f_id, c_id, u, v, fecha, lonlat, texto, cc_id) values (1, 53, 'Test', 3, now(), '-33.9857541,-70.1204587', 'Test', 268)
  3. Update: update ca set estado=2 where id_actualizacion=1014

Si tomo ese update y lo actualizo por consola, me funciona, pero a través del php no...!!!!

Gracias

Etiquetas: fecha, select, sql, 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 10:35.