Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/11/2012, 09:23
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Pregunta Problema con funcion casera

buenas gentes, veran, cree una funcion para reemplazar a mysqli_multi_query() ya que esta no me sirve como trabaja para lo que yo nesesito, las tablas mysql son innobdb y mi problema es con el tema del commit y el rollback que no logro que anden :

la funcion que hise es esta:

Código PHP:
Ver original
  1. Function Mysqli_Query_Multi($CXNMYSQL,$CON){
  2.         $EST = 'OK';       
  3.         $CON = Trim($CON);
  4.         If (Substr($CON,-1) == ';') { $CON = Substr($CON,0,-1); }
  5.         Mysqli_Query($CXNMYSQL,'START TRANSACTION;');      
  6.         Foreach ($CON As $POS => $INS) {
  7.             $RES[$POS] = Mysqli_Query($CXNMYSQL,$INS);
  8.             If (!$RES[$POS]) { $EST = 'BAD'; }
  9.         }
  10.         If ($EST == 'BAD') {
  11.             Mysqli_Query($CXNMYSQL,'ROLLBACK');
  12.             $RES = False;
  13.         } Else {
  14.             Mysqli_Query($CXNMYSQL,'COMMIT');
  15.         }
  16.         Return($RES);
  17.     }
recibe la conexion ya hecha a la base de datos, y el grupo de consultas separadas por ; como es habitual.

el resultado seria "OK" o "BAD" segun el estado de las transacciones, y en caso de ser "BAD" deveria revertir (con rollback) las transacciones. el problema que tengo es que si hay algun error en una consulta, las demas se ejecutan. cuando deverian revertirse todas alguna ayudita?
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios