Código PHP:
Ver original
<?php function conectar() { try { $db =new PDO('mysql:host=localhost;dbname=mi_base_datos', "usuario_bd", "clave_bd"); $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, TRUE); return($db); } catch (PDOException $e) { print "<p>Error: No puede conectarse con la base de datos.</p>\n"; //print "<p>Error: " . $e->getMessage() . "</p>\n"; } } ?>
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:
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 : Ver original
<?php Class Auditoria_Concurrente extends Conexion { public $con ; public function __construct() { $this->con = $this->conectar(); } //funcion donde uso la transaccion function registro_auditoria_concurrente ($data_pac, $fec_ing, $fec_egr) { //aca inicio la transaccion con PDO try{ $this->conectar()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $this->conectar()->beginTransaction(); $this->conectar()->commit(); } }catch (Exception $e) { $this->conectar()->rollBack(); echo "Error: " . $e->getMessage(); } //fin de la transaccion } } ?>
$this->conectar()
Ya que al hacer al declarar una conexion antes de iniciar la transaccion, ésta me funciona correctamente:
Código PHP:
Ver original
<?php $db =new PDO('mysql:host=localhost;dbname=mi_base_datos', "usuario", "clave"); try{ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->beginTransaction(); $db->commit(); } }catch (Exception $e) { $db->rollBack(); echo "Error: " . $e->getMessage(); } ?>
Agradezco me puedan indicar como usar el $this->conectar() o porque se puede estar presentando este error...Muchas gracias