PHP - como Realizar mas de 1 Insert en mysql con PHP?

   
Vista:

como Realizar mas de 1 Insert en mysql con PHP?

Publicado por Nata (20 intervenciones) el 17/09/2015 01:37:03
Necesito realizar mas de un insert con php y si alguno de los insert da error no guardar los cambios.
Hasta ahora he realizado esto con BEGIN, ROLLBACK , COMMIT pero me dice guardado con suceso pero en realidad no a insertado nada. Desde ya Gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$error = 0; //variable para detectar error
      //mysqli_query($con,"BEGIN"); // Inicio de Transacción
      while ($resultBuscaParticipante = mysqli_fetch_array($queryBuscaParticipante)) {
            $Participante_IdParticipante = $resultBuscaParticipante['Participante_idParticipante'];
         $sql = utf8_decode("insert into frequencia (Oficina_IdOficina, Participante_IdParticipante,dataFrequencia) values ('$Oficina_idOficina','$Participante_IdParticipante','$dataFrequencia');");
         $result = mysqli_query($con, $sql);
         if(!$result){
            $error = true;
         }
      }
      if($error) {
         //mysqli_query($CON,"ROLLBACK"); //se houver algum erro em algum dos insert, volta atrás sem salvar nenhum
         $notificacion = ' ao cadastrar!';
            setMensaje('gravar', $notificacion, 'error');
         } else {
         //mysqli_query($CON,"COMMIT"); //se nao houver nenhum erro salva as modificacoes
         $notificacion = ' Sucesso ao cadastrar!';
            setMensaje('gravar', $notificacion, 'sucesso');
      }
header("Location: ../index.php?id=listarFrequencias");
    }

Sin el BEGIN, ROLLBACK y COMMIT si ingresa los datos a la base de datos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Leonardo Daniel A.

como Realizar mas de 1 Insert en mysql con PHP?

Publicado por Leonardo Daniel A. (9 intervenciones) el 17/09/2015 02:01:32
Hola revisa el siguiente codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Borrar borrar detalle anterior, actualizar inventario, insertar nuevo detalle compras
	function delDetalle($id)
	{
		$detalle = $this->getDetalle($id) ;
		$cntDet = count($detalle);
 
		if ( $cntDet >=1 )
		{
			// Iniciar transaccion
			$sql = "SET AUTOCOMMIT=0;";
			$resultado = $this->query($sql);
			$sql = "BEGIN;";
			$resultado = $this->query($sql);
 
			for ($i = 0; $i < $cntDet; $i++)
			{
				$cant = $detalle[$i]['cantidad'];
				$articulo = $detalle[$i]['id_articulo'];
 
				$sql = "update inventario set existencia = (existencia - $cant) where id_articulo = $articulo ; ";
				$resultado = $this->query($sql);
			}
 
 
			$SQL = "delete from detalle_compras where id_compra = $id ;";
			if ($rs2 = $this->query($SQL))
				{
				$sql = "COMMIT;";
				$resultado = $this->query($sql);
				return "SI";
				}
			else
				{
				$sql = "ROLLBACK;";
				$resultado = $this->query($sql);
				return "NO";
				}
		}
		else
			return "SI";
 
	}
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

como Realizar mas de 1 Insert en mysql con PHP?

Publicado por Nata (20 intervenciones) el 17/09/2015 02:15:36
no funciona, lo modifique y quedó de esta manera:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Iniciar transaccion
			$sql = "SET AUTOCOMMIT=0;";
			$resultado = mysqli_query($con,$sql);
			$sql = "BEGIN;";
			$resultado = mysqli_query($con,$sql);
 
					$error = 0; //variable para detectar error
		//mysqli_query($con,"BEGIN"); // Inicio de Transacción
		while ($resultBuscaParticipante = mysqli_fetch_array($queryBuscaParticipante)) {
            $Participante_IdParticipante = $resultBuscaParticipante['Participante_idParticipante'];
			$sql = utf8_decode("insert into frequencia (Oficina_IdOficina, Participante_IdParticipante,dataFrequencia) values ('$Oficina_idOficina','$Participante_IdParticipante','$dataFrequencia');");
			$result = mysqli_query($con, $sql);
			if(!$result){
				$error = true;
			}
		}
 
		if($error) {
			//mysqli_query($CON,"ROLLBACK"); //se houver algum erro em algum dos insert, volta atrás sem salvar nenhum
			$sql = "COMMIT;";
			$resultado = mysqli_query($con,$sql);
			$notificacion = ' ao cadastrar!';
            setMensaje('gravar', $notificacion, 'error');
			} else {
			//mysqli_query($CON,"COMMIT"); //se nao houver nenhum erro salva as modificacoes
			$sql = "ROLLBACK;";
			$resultado = mysqli_query($con,$sql);
			$notificacion = ' Sucesso ao cadastrar!';
            setMensaje('gravar', $notificacion, 'sucesso');
		}
		header("Location: ../index.php?id=listarFrequencias");

pero sucede lo mismo dice suceso pero no modifica la base de datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar