【问题标题】:How to insert HTML Form array into database rows in mySQL with PHP如何使用 PHP 将 HTML 表单数组插入 mySQL 中的数据库行
【发布时间】:2018-12-29 11:11:03
【问题描述】:

使用 PHP 将 HTML 表单数组插入到 mySQL 中的数据库行中 我正在使用 for 和 foreach 将 html 数组插入数据库 使用for循环将数据插入数据库的问题,它插入空白数据 请帮忙。请提供建议或解决方案提前谢谢 我已经尝试了下面的代码或使用它的任何不同方法。

php 文件

 if(isset($_POST['submitmultiple']))
{

    $course_id = $_POST['course_id'];
    $topic_name = $_POST['topic_name'];
    $topic_description = $_POST['topic_description'];
    $parent_id = $_POST['parent_id'];


    echo count($course_id);

    if(!empty($course_id))
    {
        for($i = 0; $i < count($course_id); $i++)
        {
            /*if(!empty($course_id[$i]))
            {*/ 
            foreach ($_POST['course_id'] as $value) 
            { 
                $course_id = $course_id[$i];
                $topic_name = $topic_name[$i];
                $topic_description = $topic_description[$i];
                $parent_id = $parent_id[$i];

                $sql = "INSERT INTO syllabus (course_id,topic_name,topic_description,parent_id) VALUES ('$course_id','$topic_name','$course_description','$parent_id')";
                if($connect->query($sql) === TRUE) 
                {
                    $valid[1] = "Added Successfully";   
                } 
                else 
                {
                    $valid[2] = "Error while Inserting";
                }
            }
            /*}*/
        }
    }
}

html代码

<form  id="submitMultipleData" class="submitMultipleData"  role="form" name="hl_form" method="post" >
        <div class="box-body">
          <div class="row">
          </div>
          <!-- /.row -->

          <table class="table table-bordered table-striped table-condensed table-hover" id="dynamic_field">  
               <th>Course Name</th>
               <th>Topic Name</th>
               <th>Description</th>
               <th>Parent Topic Name</th>
               <th>Action</th>

               <tr id="id" class="trrow"> 
                    <td class="col-md-4">
                        <select class="form-control select2 selectCourse" data-id="1"  id="course_id_1" name="course_id[]" data-live-search="true" >
                                <option value="" selected="selected"> Select Course Name</option>
                                    <?php
                                                $sql = "SELECT * from course_master";
                                                $result = $connect->query($sql); 
                                                 while($row_pt = $result->fetch_array()) 
                                                     { 

                                                         ?>
                                                  <option value="<?php echo $row_pt['course_id']; ?>"><?php echo $row_pt['course_name']; ?></option>

                                                <?php 
                                                     }
                                     ?>
                         </select >
                     </td>


                    <td class="col-md-2"> <input class="form-control topic_name" id="topic_name1" name="topic_name[]" maxlength="250"  value="" placeholder="Enter Topic Name" type="text" ></td>

                    <td class="col-md-4"><textarea class="form-control" style="resize: none;" id="topic_description1"  name="topic_description[]" rows="3" placeholder="Enter Description"></textarea></td>

                    <td class="col-md-2"><select class="form-control select2" id="parent_id_1" name="parent_id[]" data-live-search="true" ></select></td>

                    <td class="col-md-2"><input type="button" name="add" value="Add Row" class="btn btn-success"></td>

               </tr>  
        </table>
    </div>

    <!-- /.box-body -->
    <div class="box-footer">
      <button type="submit" name="submitmultiple" id="button" class="btn btn-primary btn-form-action btn-submit">Save</button>
    </div>
    </form>

【问题讨论】:

  • 可以选择多少门课程——不止一门?您能否在echo count($course_id); 行之前添加print_r($_POST) 并分享结果?
  • 数组 ( [course_id] => 数组 ( [0] => 2 [1] => 14 [2] => 2 ) [topic_name] => 数组 ( [0] => test1 [ 1] => test2 [2] => test3 ) [topic_description] => 数组 ( [0] => test1 [1] => test2 [2] => test3 ) [parent_id] => 数组 ( [0] => 7 [1] => 75 [2] => 7 ) [submitmultiple] => )
  • 首先,防止你的代码被sql注入。第二行$course_id = $course_id[$i]; 您使用的是相同的变量,因此您将丢失从帖子中获得的第二次迭代的数组数据。使用另一个变量而不是 $course_id 以及您在循环中使用的任何内容。

标签: php html


【解决方案1】:

假设索引处的值与课程/主题/家长等相关。 您也可以跳过其中一个 for 循环。

if(isset($_POST['submitmultiple']))
{

    $course_id = $_POST['course_id'];
    $topic_name = $_POST['topic_name'];
    $topic_description = $_POST['topic_description'];
    $parent_id = $_POST['parent_id'];

    echo count($course_id);

    if(!empty($course_id))
    {
        foreach ($_POST['course_id'] as $key => $value) 
        { 
            $tempcourse_id = $course_id[$key];
            $temptopic_name = $topic_name[$key];
            $temptopic_description = $topic_description[$key];
            $tempparent_id = $parent_id[$key];

            $sql = "INSERT INTO syllabus (course_id,topic_name,topic_description,parent_id) VALUES ('$tempcourse_id','$temptopic_name','$temptopic_description','$tempparent_id')";

            //Verify the query formed
            echo $sql."\n";
            if($connect->query($sql) === TRUE) 
            {
                $valid[1] = "Added Successfully";   
            } 
            else 
            {
                $valid[2] = "Error while Inserting";
            }
        }
    }
}

【讨论】:

    【解决方案2】:

    1) 你的问题不清楚 - 不明白如何发送多个来源

    在此处添加多个

    选择

    多选

    2) 沿字段添加单引号 (course_id,topic_name,topic_description,parent_id) 至 ('course_id','topic_name','topic_description','parent_id')

    在更改了这些更改后,我可以通过提交表单来查看此查询

    INSERT INTO syllabus ('course_id','topic_name','topic_description','parent_id') VALUES ('c2','asd','','1')

    查询似乎很好 - 应该插入数据

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 2015-02-27
      • 1970-01-01
      相关资源
      最近更新 更多