Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Transaccion PDO usando Extend me genera error

Estas en el tema de Transaccion PDO usando Extend me genera error en el foro de PHP en Foros del Web. Hola a todos, tengo una clase llamada Conexion la cual tiene la siguiente funcion: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php     function conectar ...
  #1 (permalink)  
Antiguo 26/09/2013, 15:18
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años, 7 meses
Puntos: 27
Transaccion PDO usando Extend me genera error

Hola a todos, tengo una clase llamada Conexion la cual tiene la siguiente funcion:
Código PHP:
Ver original
  1. <?php
  2.  
  3.  function conectar()
  4.  {
  5.    try {
  6.       $db =new PDO('mysql:host=localhost;dbname=mi_base_datos', "usuario_bd", "clave_bd");
  7.       $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, TRUE);
  8.       return($db);
  9.        } catch (PDOException $e) {
  10.          print "<p>Error: No puede conectarse con la base de datos.</p>\n";
  11.          //print "<p>Error: " . $e->getMessage() . "</p>\n";
  12.         exit();
  13.       }
  14. }
  15. ?>

Ahora tengo una Clase llamada Auditoria_Concurrente, a la cual le hago un Extend con Conexion. En esta misma clase tengo otra funcion para registrar y actualizar en varias tablas y es ahi donde uso la transaccion:

Código PHP:
Ver original
  1. <?php
  2. Class Auditoria_Concurrente extends Conexion  {
  3.    
  4.     public $con ;
  5.     public function __construct()  {
  6.         $this->con = $this->conectar();
  7.     }
  8.     //funcion donde uso la transaccion
  9.      function registro_auditoria_concurrente ($data_pac,  $fec_ing, $fec_egr)
  10.    {
  11.       //aca inicio la transaccion  con PDO
  12.       try{
  13.          $this->conectar()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  14.          $this->conectar()->beginTransaction();
  15.          $this->conectar()->exec("insert into mi_tabla ... ");
  16.          $this->conectar()->exec("insert into mi_tabla2 ... ");
  17.          $this->conectar()->commit();
  18.        }
  19.        }catch (Exception $e) {
  20.            
  21.               $this->conectar()->rollBack();
  22.               echo "Error: " . $e->getMessage();
  23.            }
  24.      //fin de la transaccion
  25.  
  26.     }
  27.  
  28.  
  29.  
  30.  
  31. }
  32. ?>
El problema es que asi haya un error de insercion en la transaccion, siempre me devuelve verdadero, es decir, aquellos insert a los que le tengo error, no se ejecutan pero todo lo demas si, se supone que la transaccion ejecuta todo o nada.. Pienso Y por eso acudo a este foro, que estoy usando mal la parte :
$this->conectar()

Ya que al hacer al declarar una conexion antes de iniciar la transaccion, ésta me funciona correctamente:

Código PHP:
Ver original
  1. <?php
  2. $db =new PDO('mysql:host=localhost;dbname=mi_base_datos', "usuario", "clave");
  3.  try{
  4.      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  5.      $db->beginTransaction();
  6.      $db->exec("insert into mi_tabla ... ");
  7.      $db->exec("insert into mi_tabla2 ... ");
  8.      $db->commit();
  9.        }
  10.        }catch (Exception $e) {
  11.            
  12.               $db->rollBack();
  13.               echo "Error: " . $e->getMessage();
  14.        }
  15.  
  16.    
  17.  
  18. ?>

Agradezco me puedan indicar como usar el $this->conectar() o porque se puede estar presentando este error...Muchas gracias
  #2 (permalink)  
Antiguo 26/09/2013, 15:38
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 11 años, 3 meses
Puntos: 55
Respuesta: Transaccion PDO usando Extend me genera error

Hola debes usar $con (la propiedad de tu objeto).
La coneccion ya esta, solo la debes usar.
Saludos

  1. <?php
  2. Class Auditoria_Concurrente extends Conexion {
  3. public $con ;
  4. public function __construct() {
  5. $this->con = $this->conectar();
  6. }
  7. //funcion donde uso la transaccion
  8. function registro_auditoria_concurrente ($data_pac, $fec_ing, $fec_egr)
  9. {
  10. //aca inicio la transaccion con PDO
  11. try{
  12. $this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  13. $this->con->beginTransaction();
  14. $this->con->exec("insert into mi_tabla ... ");
  15. $this->con->exec("insert into mi_tabla2 ... ");
  16. $this->con->commit();
  17. }
  18. }catch (Exception $e) {
  19. $this->con->rollBack();
  20. echo "Error: " . $e->getMessage();
  21. }
  22. //fin de la transaccion
  23. }
  24. }
  25. ?>



  #3 (permalink)  
Antiguo 26/09/2013, 16:11
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años, 7 meses
Puntos: 27
Respuesta: Transaccion PDO usando Extend me genera error

Muchas gracias !! Si sirvio

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