【发布时间】: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以及您在循环中使用的任何内容。