php - 插入由 fk - php 链接的多行

标签 php mysql sql oracle pdo

我正在尝试将表单中的数据插入到 Teams 表中,其中包含所有团队名称和每个年龄组的 fk。 我从一个简单的 SELECT 函数获取年龄组 id,然后在表单上循环该 id。 当我运行插入函数时,我只从第一个表单中获取 4 行数据。 因此,如果有 3,4 或 5 个不同的年龄组,我想插入所有组的名称和age_group fk

形式和年龄组循环:

<form action="" method="post">
   <?php
      $ages = get_age_groups_in_cups($db);
         foreach($ages as $age){
   ?>

   <input type="text" name="age_group[]" value="<?php echo $age['age_id'];?>">
   <input type="text" name="team_name[]">
   <input type="text" name="team_name[]">
   <input type="text" name="team_name[]">
   <input type="text" name="team_name[]">

   <?php
     }
   ?>

   <button name="insert_rows">save</button>
</form>

提交插入按钮后,我正在运行插入函数,但我只从“第一个”age_group 获取结果

功能:

function insert_teams($db){
    $age_group = $_POST['age_group'];
    $team_name = $_POST['team_name'];

    foreach ($age_group as $key => $error){
        $sql = "INSERT INTO teams (team_name, age_group_fk) VALUES (:team_name, :age_group_fk)";
        $stmt = $db->prepare($sql);
        $stmt->execute(array(
            'team_name' => $team_name,
            'age_group_fk' => $age_group[$key]
            ));
        }

    }

最佳答案

您应该在输入数组上添加一个级别。

您使用<input type="text" name="team_name[]">每个年龄段。

但基本上所有年龄段都会在同一个数组中。

使用类似的东西

<?php
    <form action="#" method="post">
       <?php
     $ages = get_age_groups_in_cups($db);
             foreach($ages as $age){
       ?>

       <input type="text" name="team_name[<?= $age['age_id'] ?>][]">
       <input type="text" name="team_name[<?= $age['age_id'] ?>][]">
       <input type="text" name="team_name[<?= $age['age_id'] ?>][]">
       <input type="text" name="team_name[<?= $age['age_id'] ?>][]">

       <?php
         }
       ?>

       <button name="insert_rows">save</button>
    </form>

关于php - 插入由 fk - php 链接的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40527281/

相关文章:

sql - 如何通过比较 A 列中具有相同值的记录中 B、C 列中的值来选择记录?

php - SQLSTATE[23000] : Integrity constraint violation: 1052

mysql - Rails : List items by frequency, 包括频率

mysql - 尝试隔离每个主机的 pt-query-digest

mysql - 如何在mysql中按时间戳排序?

mysql - 站点层次结构的邻接列表模型,如何按此特定顺序检索所有页面?

php - 使用 ExpressionEngine 并收到此错误 : A Database Error Occurred, 错误号 : 1117, 列太多

php - pdo 使用 avg 列出前 5 名?

php - 使用数组准备好的语句

php - 制作您自己的代码示例框