插入具有特定计算值的多行

时间:2014-05-27 16:02:29

标签: php mysql pdo

我需要插入一张桌子" x"行数基于多少"组"和#34;球员"用户输入表单(该部分有效)但我还需要使用特定值标记它们,并且不能拥有玩家值#4。

实施例: 如果用户说他们需要2组和6名玩家。这意味着有2组每组6个玩家,所以我需要在表格中插入12条记录,它应该是这样的:

id     group     player     
1      1         1
2      1         2
3      1         3
4      1         5
5      1         6
6      1         7
7      2         1
8      2         2
9      2         3
10     2         5
11     2         6
12     2         7

这是我的表格..

<form id="setup" name="setup" method="post" action="bin/setup.php">
   <input type="text" name="groups" placeholder="# OF GROUPS" value="">
   <input type="text" name="players" placeholder="# OF PLAYERS" value="">
   <button class="btn" name="submit" type="submit">Insert</button>
</form>

这里是插入记录的代码。现在,它插入了12条记录,但无法弄清楚如何处理&#34;组&#34;和#34;球员&#34;

if(isset($_POST['submit'])) {
        $group = ( ($_POST['groups']) * ($_POST['players']) );

        $sql = "INSERT INTO table (groups, players) 
        VALUES (:groups, :players)";
        $stmt = $db->prepare($sql);
        $stmt->bindParam(':groups', $_POST['groups']);
        $stmt->bindParam(':players', $_POST['players']);

        for ($i = 0; $i < $tables; $i++) {
            $stmt->execute();
        }       

    header("Location:/"); 
    exit;

} else {
    header("Location:/?msg=error"); 
    exit();
}

任何帮助都会很棒。 感谢。

-------更新版本-------

  • 插入具有正确值的行(从播放器列跳过值#4)。

        $sql = "INSERT INTO table (groups, players) 
        VALUES (:groups, :players)";
        $stmt = $db->prepare($sql);
    
        for($i=1; $i <= $_POST['groups']; $i++)
         for($j=1; $j <= $_POST['players']+1; $j++)
          {
            if($j == 4){continue;}
            $stmt->bindParam(':groups', $i);
            $stmt->bindParam(':players', $j); 
            $stmt->execute();
          } 
    

1 个答案:

答案 0 :(得分:1)

您需要将绑定推送到双循环:

$sql = "INSERT INTO table (groups, players) VALUES (:groups, :players)";
for($i=1; $i <= $_POST['groups']; $i++)
  for($j=1; $j <= $_POST['players']; $j++)
  {
     $stmt->bindParam(':groups', $i);
     $stmt->bindParam(':players', $j); 
     $stmt->execute();
  }