29/07/2011, 13:32
|
| $this->role('moderador'); | | Fecha de Ingreso: mayo-2006 Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses Puntos: 2135 | |
Respuesta: Duda PDO y ROLLBACK Cita:
Iniciado por jotaincubus Acabo de realizar la siguiente prueba...
Código PHP:
Ver original<?php require_once 'include/cls.trans.DB.php'; // invoco la pagina que conecta a la base de datos $conexion = DB::getInstance(); //obtengo una instancia de la conexion try{ $conexion->comenzartransaccion(); // insert que no provoca error $array = array(2, 'Probando', 1); $conexion->prepararInsersiones("INSERT INTO tbl_ciudad (id_dpto, ciudad_nombre, ciudad_estado) VALUES (?, ?, ?)"); $conexion->ejecutar($array); // provocar error $array2 = array('sapo', 'Otro', 1); $conexion->prepararInsersiones("INSERT INTO tbl_ciudad (id_dpto, ciudad_nombre, ciudad_estado) VALUES (?, ?, ?)"); $conexion->ejecutar($array2); $conexion->commiter(); echo "Todo bien...!"; }catch(PDOException $e){ //$conexion->rollback(); } ?>
Como pueden ver el primero esta bien, el segundo NO PORQUE EL PRIMER CAMPO ES INTEGER y le puse 'sapo', y déjenme decirles que NO INSERTO EL PRIMERO TAMPOCO, pero si comento el segundo INSERT si me inserta el primero... entonces mira que si una no se cumple NO HACE NADA DEL BLOQUE TRY.
Error generado:
Incorrect integer value: 'sapo' for column 'id_dpto' at row 1 Verifica que no tengas el AutoCommit en tu MySQL, ya que al hacer el begintransaction, espera una transacción, y al no hacer el commit, aunque no hagas explicitamente el rollback no va a insertar el dato hasta encontrarse con un commit. |