PHP - Problema al intentar insertar varios datos

 
Vista:
sin imagen de perfil

Problema al intentar insertar varios datos

Publicado por Matias (31 intervenciones) el 31/05/2019 21:53:35
Hola gente, tengo un pequeño problema y no se que puede estar mal.
Antes que nada, si es algun error muy bobo no me reten porque soy mas o menos nuevo en PHP y recien estoy agarrandole la mano. En fin:

Estoy intentando guardar 3 registros de forma simultánea con un bindParam() pero cuando lo hago en la base de datos me pasa 3 valores vacios y ceros.
El código que estoy utilizando es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (!isset($_POST['nombreLocal'])){
      $sql = "INSERT INTO finalizado (liga, numeroFecha, nombreLocal, golesLocal) VALUES (:liga, :numeroFecha, :nombreLocal1, :golesLocal1),(:liga, :numeroFecha, :nombreLocal2, :golesLocal2),(:liga, :numeroFecha, :nombreLocal3, :golesLocal3)";
      $stmt = $conn->prepare($sql);
      $stmt->bindParam(':liga', $_POST['liga']);
      $stmt->bindParam(':numeroFecha', $_POST['numeroFecha']);
      $stmt->bindParam(':nombreLocal1', $_POST['nombreLocal1']);
      $stmt->bindParam(':golesLocal1', $_POST['golesLocal1']);
      $stmt->bindParam(':nombreLocal2', $_POST['nombreLocal2']);
      $stmt->bindParam(':golesLocal2', $_POST['golesLocal2']);
      $stmt->bindParam(':nombreLocal3', $_POST['nombreLocal3']);
      $stmt->bindParam(':golesLocal3', $_POST['golesLocal3']);
      if ($stmt->execute()) {
        $message = 'DATOS ACTUALIZADOS';
      } else {
        $message = 'ERROR DE ACTUALIZACION';
      }
}$stmt->execute();
$message='';

Luego al intentar pasar los valores por un foreach en donde tengo los valores ya guardados:

1
2
3
4
5
6
7
8
9
10
11
12
<form action="actualizar1.php" method="post">
    <input type="hidden" name="liga" value="<?php echo $f['nombre_liga'];?>">
    <input type="hidden" name="numeroFecha" value="<?php echo $f['numero_fecha'];?>">
    foreach ($part as $pa){?>
          <input type="hidden" name="nombreLocal1" value="<?php echo $pa['nombreL1'];?>">
           <input type="hidden" name="golesLocal1" value="<?php echo $r['valorL1']?>">
          <input type="hidden" name="nombreLocal2" value="<?php echo $pa['nombreL2'];?>">
           <input type="hidden" name="golesLocal2" value="<?php echo $r['valorL2']?>">
          <input type="hidden" name="nombreLocal3" value="<?php echo $pa['nombreL3'];?>">
           <input type="hidden" name="golesLocal3" value="<?php echo $r['valorL3']?>">
           <input type="submit" value="Actualiza resultados">
</form>

Es más, solo con ingresar a esa página que contiene el formulario ya me guarda en la bdd con valores vacios
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Problema al intentar insertar varios datos

Publicado por Mauro (1047 intervenciones) el 03/06/2019 18:05:16
Es un poco rara la sentencia que usás... si necesitás que los tres inserts se hagan a la vez te recomiendo usar transacciones

De esa forma podés re-utilizar el preparedStatement. Algo como:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (!isset($_POST['nombreLocal'])){
      $sql = "INSERT INTO finalizado (liga, numeroFecha, nombreLocal, golesLocal) VALUES (:liga, :numeroFecha, :nombreLocal, :golesLocal)";
      $stmt = $conn->prepare($sql);
      $stmt->bindParam(':liga', $_POST['liga']);
      $stmt->bindParam(':numeroFecha', $_POST['numeroFecha']);
      for ( $i = 1; $i <= 3; $i++ ) {
          $stmt->bindParam(':nombreLocal', $_POST['nombreLocal'.$i]);
          $stmt->bindParam(':golesLocal1', $_POST['golesLocal'.$i]);
          if ($stmt->execute()) {
            $message = 'DATOS ACTUALIZADOS';
          } else {
            $message = 'ERROR DE ACTUALIZACION';
          }
      }
}
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