php - 如何使用 PHP 和 MySQL 一次从单个表单插入多个值

标签 php mysql forms post

我尝试使用 php 在 mysql 中插入多个名称及其相应的姓氏,但似乎有些地方做错了。我尝试了谷歌和这个网站,但我还没有得到适合我要求的最佳答案。我也设法插入它们,但姓氏可能会出现错误的用户名,然后我决定删除该代码并开始一个新的代码。任何帮助将受到高度赞赏。以下是我尝试过的。

 <form action ="dependant_Process_Trevor.php?memberid=<?php echo $_GET['memberid']; ?>" name="contactform"  method="post" id ="---contactform" >
               <input type="hidden" name ="memberid" value="<?php echo $_GET['memberid']; ?>" >
                <div class="box-header">
                </div>
            <!-- Start Trevor -->
              <div class="box box-danger">
                <div class="box-header with-border">
                  <h3 class="box-title">Dependents / Children under the age of 18 years - maximum 6 children</h3>
                </div>
                    <!-- First child -->
                <div class="box-body">
                  <div class="row">
                  <div class="col-xs-3">
                      <input type="text" name ="name[]"class="form-control" placeholder="Name">
                    </div>
                    <div class="col-xs-4">
                      <input type="text" name ="surname[]" class="form-control" placeholder="Surname">
                    </div>
                    <div class="col-xs-5">
                    <label>parent_type</label>
                   <select  name ="parent_type[]" "> 
                       <option  value ="" >Select Type</option>
                      <option name ="parent_type[]" value ="Son">Son</option>
                      <option name ="parent_type[]" value ="Daughter">Daughter</option>
                      <option name ="parent_type[]" value ="Brother">Brother</option>
                      <option name ="parent_type[]" value ="Grandchild">Grandchild</option>
                      <option name ="parent_type[]" value ="Nephew">Nephew</option>
                      <option name ="parent_type[]" value ="Niece">Niece</option>

                    </select>
                    </div>
                  </div>
                </div><!-- /.box-body -->
                <!-- End second  child -->

                    <!-- Start second child -->
                <div class="box-body">
                  <div class="row">
                   <div class="col-xs-3">
                      <input type="text" name ="name[]"class="form-control" placeholder="Name">
                    </div>
                    <div class="col-xs-4">
                      <input type="text" name ="surname[]" class="form-control" placeholder="Surname">
                    </div>
                    <div class="col-xs-5">
                    <label>parent_type</label>
                   <select  name ="parent_type[]" "> 
                       <option  value ="" >Select Type</option>
                     <option name ="parent_type[]" value ="Son">Son</option>
                      <option name ="parent_type[]" value ="Daughter">Daughter</option>
                      <option name ="parent_type[]" value ="Brother">Brother</option>
                      <option name ="parent_type[]" value ="Grandchild">Grandchild</option>
                      <option name ="parent_type[]" value ="Nephew">Nephew</option>
                      <option name ="parent_type[]" value ="Niece">Niece</option>

                    </select>
                    </div>
                  </div>
                </div><!-- /.box-body -->
                <!-- End second  child -->
                    <!-- Third  child -->
                <div class="box-body">
                  <div class="row">
                   <div class="col-xs-3">
                      <input type="text" name ="name[]"class="form-control" placeholder="Name">
                    </div>
                    <div class="col-xs-4">
                      <input type="text" name ="surname[]" class="form-control" placeholder="Surname">
                    </div>
                    <div class="col-xs-5">
                    <label>parent_type</label>
                   <select  name ="parent_type[]" "> 
                       <option  value ="" >Select Type</option>
                     <option name ="parent_type[]" value ="Son">Son</option>
                      <option name ="parent_type[]" value ="Daughter">Daughter</option>
                      <option name ="parent_type[]" value ="Brother">Brother</option>
                      <option name ="parent_type[]" value ="Grandchild">Grandchild</option>
                      <option name ="parent_type[]" value ="Nephew">Nephew</option>
                      <option name ="parent_type[]" value ="Niece">Niece</option>

                    </select>
                    </div>
                  </div>
                </div><!-- /.box-body -->
                <!-- End third   child -->

                <!-- Fourth child -->
                <div class="box-body">
                  <div class="row">
                  <div class="col-xs-3">
                      <input type="text" name ="name[]"class="form-control" placeholder="Name">
                    </div>
                    <div class="col-xs-4">
                      <input type="text" name ="surname[]" class="form-control" placeholder="Surname">
                    </div>
                    <div class="col-xs-5">
                    <label>parent_type</label>
                   <select  name ="parent_type[]" "> 
                       <option  value ="" >Select Type</option>
                       <option name ="parent_type[]" value ="Son">Son</option>
                      <option name ="parent_type[]" value ="Daughter">Daughter</option>
                      <option name ="parent_type[]" value ="Brother">Brother</option>
                      <option name ="parent_type[]" value ="Grandchild">Grandchild</option>
                      <option name ="parent_type[]" value ="Nephew">Nephew</option>
                      <option name ="parent_type[]" value ="Niece">Niece</option>

                    </select>
                    </div>
                  </div>
                </div><!-- /.box-body -->
                <!-- End second  child -->

                    <!-- Fifth child -->
                <div class="box-body">
                  <div class="row">
                   <div class="col-xs-3">
                      <input type="text" name ="name[]"class="form-control" placeholder="Name">
                    </div>
                    <div class="col-xs-4">
                      <input type="text" name ="surname[]" class="form-control" placeholder="Surname">
                    </div>
                    <div class="col-xs-5">
                    <label>parent_type</label>
                   <select  name ="parent_type[]" "> 
                       <option  value ="" >Select Type</option>
                       <option name ="parent_type[]" value ="Son">Son</option>
                      <option name ="parent_type[]" value ="Daughter">Daughter</option>
                      <option name ="parent_type[]" value ="Brother">Brother</option>
                      <option name ="parent_type[]" value ="Grandchild">Grandchild</option>
                      <option name ="parent_type[]" value ="Nephew">Nephew</option>
                      <option name ="parent_type[]" value ="Niece">Niece</option>
                    </select>
                    </div>
                  </div>
                </div><!-- /.box-body -->
                <!-- End fifth  child -->
                    <!-- six  child -->
                <div class="box-body">
                  <div class="row">
                    <div class="col-xs-3">
                      <input type="text" name ="name[]"class="form-control" placeholder="Name">
                    </div>
                    <div class="col-xs-4">
                      <input type="text" name ="surname[]" class="form-control" placeholder="Surname">
                    </div>
                    <div class="col-xs-5">
                    <label>parent_type</label>
                   <select  name ="parent_type[]" "> 
                       <option  value ="" >Select Type</option>
                      <option name ="parent_type[]" value ="Son">Son</option>
                      <option name ="parent_type[]" value ="Daughter">Daughter</option>
                      <option name ="parent_type[]" value ="Brother">Brother</option>
                      <option name ="parent_type[]" value ="Grandchild">Grandchild</option>
                      <option name ="parent_type[]" value ="Nephew">Nephew</option>
                      <option name ="parent_type[]" value ="Niece">Niece</option>

                    </select>
                    </div>
                  </div>
                </div><!-- /.box-body -->
                <!-- End six  child -->

              </div><!-- /.box -->
              <!-- End  Trevor -->  

                <div class="box-body">
                  <!-- Date dd/mm/yyyy -->
                  <div class="form-group">
                    <div class="input-group">
                      <div class="input-group-addon">
                      </div>
                    </div><!-- /.input group -->
                  </div><!-- /.form group -->

<input type="submit" name ="submit" value ="Save Data" class="btn-primary">
</form>

下面是我的 php

//$surname =(isset($_POST['surname']))? trim ($_POST['surname']):'';
$recieved_by =($_SESSION['username']);
$othername =(isset($_POST['othername']))? trim ($_POST['othername']):'';
$gender =(isset($_POST['gender']))? trim ($_POST['gender']):'';
//$parent_type =(isset($_POST['parent_type']))? trim ($_POST['parent_type']):'';
$id_passport =(isset($_POST['id_passport']))? trim ($_POST['id_passport']):'';
$tel =(isset($_POST['tel']))? trim ($_POST['tel']):'';
$work_contact =(isset($_POST['work_contact']))? trim ($_POST['work_contact']):'';
$address =(isset($_POST['address']))? trim ($_POST['address']):'';
$work_address =(isset($_POST['work_address']))? trim ($_POST['work_address']):'';
$comments =(isset($_POST['comments']))? trim ($_POST['comments']):'';
$cell =(isset($_POST['cell']))? trim ($_POST['cell']):'';
//cell convert to 27 


if(isset($_POST['submit'])){
foreach($_POST['name'] as $name)
foreach ($_POST['surname'] as $surname)
foreach($_POST['parent_type'] as $parent_type )


$count = count($_POST['name']);

if(is_array($name) && is_array($surname) && is_array($parent_type)) {

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


//$name =  $_POST['name'][$i], $_POST['surname'][$i] , $_POST['parent_type'][$i];
//echo $name; 
///
#########################################################
$query ='INSERT INTO dependants(
name, surname, othername, gender, id_passport, 
cell, tel, work_contact, address, work_address, comments, 
memberid,companyid, joined_date, usercode, recieved_by , deadalive
)
VALUES
(
:name, :surname, :othername, :gender, :id_passport, 
:cell, :tel, :work_contact, :address, :work_address, :comments, 
:memberid,:companyid, :joined_date, :usercode, :recieved_by ,:deadalive
)';
$insert=$con->prepare($query);
$insert->execute(array(
':name'=>$name,
':surname'=>$surname,
':othername'=>$othername,
':gender'=>$gender,
':id_passport'=>$id_passport,
':cell'=>$realcell,
':tel'=>$tel,
':work_contact'=>$work_contact,
':address'=>$address,
':work_address'=>$work_address,
':comments'=>$comments,
':memberid'=>$memberid,
':usercode'=>$usercode,
':joined_date'=>$joined_date,
':companyid'=>$companyid,
':recieved_by'=>$recieved_by,
':deadalive'=>$deadalive
));
}}}

if($query){
echo '<h1 style="color:green">Dependant Created</h1>';
}

最佳答案

我认为有几个问题,首先是大部分代码都是多余的......

foreach($_POST['name'] as $name)
foreach ($_POST['surname'] as $surname)
foreach($_POST['parent_type'] as $parent_type )


$count = count($_POST['name']);

由于 foreach() 没有 {},所以所有循环最终都会只执行最后一行,这将始终是相同的。因此,删除 3 个 foreach() 循环就可以了

$count = count($_POST['name']);

然后设置每个循环的值,你几乎已经拥有它(我认为)并且需要......

$name =  $_POST['name'][$i];
$surname = $_POST['surname'][$i];

最后进行测试,看看它是否有效

if($query){

不正确,您应该检查所有的

$insert->execute(array(...)); 

语句返回true,这应该表明它们已全部创建。

关于php - 如何使用 PHP 和 MySQL 一次从单个表单插入多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53686599/

相关文章:

mysql - IF 在 SWITCH CASE 语句中

php - 如何迭代页面上的表单字段并将它们发送到数据库?

forms - NgModule 和 FormModule 在每个模块上导入?

PHP+AJAX发送数据(链接)麻烦

PHP PDO,连接有效,购买查询未执行

php - Zend 框架 2 数据库 : Make a part of the query negative using Predicate objects

php - 如何从mysql到php对月份进行排序

mysql - 使用声明的表进行 SQL 循环插入

MySQL 查询连接花费的时间太长

php - 如何获取 HTML 表单以从 Mysql 数据库查询和生成结果