将可变数量的字段插入数据库MYSQLI

时间:2014-08-11 19:52:09

标签: php html mysql sql

我有一个由这两个表组成的数据库。

分会

-id *主键

-name

课程 -id

-clubid *外键

-name

====================================== HTML ======== ===============================

在我的网页上,我有一个表格,允许用户注册一个俱乐部,默认情况下从一个课程开始,并允许他们通过克隆输入字段和更改名称来点击“添加课程”。

因此,在提交时,他们可能需要将一个,两个或更多课程添加到我的数据库中

====================================== PHP ======== =================================

到目前为止,我只允许每个俱乐部开设一门课程,但需要有一对多的关系。

    if($_POST){
        if(isset($_POST['register'])){
            $clubid = $clubs->addClub($_POST['golfclub'], $_POST['email'],$_POST['password1'], $_POST['password1'],date('day',time()));
            $clubs->addClubCourse($clubid, $_POST['course1']);
            header('Location: ./index.php');
    }
}

addClubCourse使用俱乐部表中最近添加的ID进入此时的课程。如何进行迭代添加say,

$_POST['course1'], $_POST['course2']) .... etc without knowing how many courses their will be. 

==== SQL ===== 只需插入与注册相关的俱乐部ID的新课程。

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

将您的html字段命名为一个数组:

<input name="course[]">

然后,你可以这样做:

foreach($_POST['course'] as $course) {
    $clubs->addClubCourse($clubid, $course);
}

答案 1 :(得分:0)

或者遍历$ _POST,但也验证:

  foreach($_POST as $key => $value){

    if(preg_match('/^course\d+$/', $key)){
         $courses[$key] = $value;
    }
  }

虽然数组输入是一个更优雅的解决方案。