php / mysql动态表单字段未插入我的表中

时间:2018-10-09 19:57:27

标签: php mysql forms dynamic insert

我有一个具有可变数量的输入字段的表单,现在我尝试在数据库中获取这些值。我从这里的另一个问题中得到了这段代码,所有答复都暗示他们在起作用。.所以我认为我在这里做错了。

我没有错误,每次我提交表单时,它只在数据库中输入一个空条目/行。 $ _POST数组充满了我需要的所有数据,它在我打印时显示。

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {


  if (
     !empty($_POST['homeTeam']) && !empty($_POST['awayTeam']) && !empty($_POST['homeWin']) && !empty($_POST['awayWin']) && 
     is_array($_POST['homeTeam']) && is_array($_POST['awayTeam']) && is_array($_POST['homeWin']) && is_array($_POST['awayWin']) && 
     count($_POST['homeWin']) === count($_POST['awayWin'])
  ) {
      $homeTeam_array = $_POST['homeTeam'];
      $awayTeam_array = $_POST['awayTeam'];
      $homeWin_array = $_POST['homeWin'];
      $awayWin_array = $_POST['awayWin'];

      for ($i = 0; $i < count($homeTeam_array); $i++) {

          $homeTeam = mysql_real_escape_string($homeTeam_array[$i]);
          $awayTeam = mysql_real_escape_string($awayTeam_array[$i]);
          $homeWin = mysql_real_escape_string($homeWin_array[$i]);
          $awayWin = mysql_real_escape_string($awayWin_array[$i]);

          $sql = "INSERT IGNORE INTO CalcOdds (homeTeam, awayTeam, homeWin, awayWin) VALUES ('$homeTeam', '$awayTeam', '$homeWin', '$awayWin')"; 
          $conn->query($sql);
          $conn->close();

      }
  }
  echo "<pre>";
  print_r($_POST);
  echo "</pre>";
  echo 'Done!';
}

?>

2 个答案:

答案 0 :(得分:3)

我认为问题是因为您有$ conn-> close();在for循环中,尝试像这样在循环之后添加它:

     for ($i = 0; $i < count($homeTeam_array); $i++) {

          $homeTeam = mysql_real_escape_string($homeTeam_array[$i]);
          $awayTeam = mysql_real_escape_string($awayTeam_array[$i]);
          $homeWin = mysql_real_escape_string($homeWin_array[$i]);
          $awayWin = mysql_real_escape_string($awayWin_array[$i]);

          $sql = "INSERT IGNORE INTO CalcOdds (homeTeam, awayTeam, homeWin, awayWin) VALUES ('$homeTeam', '$awayTeam', '$homeWin', '$awayWin')"; 
          $conn->query($sql);            
      }
      $conn->close();

答案 1 :(得分:0)

  1. 我会做isset()而不是!empty()

  2. 从外观上看,您实际上尚未建立与数据库的连接。

  3. 例如,通过使用echo()确保数据实际上通过if()语句获得。