一次从表单插入多条记录

Insert Multiple Records from Form at Once

提问人:user2048308 提问时间:2/16/2019 最后编辑:Twinkleuser2048308 更新时间:2/16/2019 访问量:151

问:

我有两个动态多选择器表单字段,我正在尝试一次将表单中的所有记录插入数据库。一个选择器用于选区,另一个选择器是数据元素列表。对于每个地区,每个数据元素都应该有一条记录。因此,如果有人选择了 2 个地区和 3 个数据元素,则应将 6 条记录插入数据库。我感谢任何人可以提供的任何帮助。谢谢。

这是我的表单代码:

 <form method="post" action="process.php" enctype="multipart/form-     
data">
<div class="row">
<div class="col-xs-5">
<select name="from[]" id="search" class="form-control" size="15"     
multiple="multiple">
<?php
while(!$category->atEnd()) { //dyn select
?>
<option value="<?php echo($category- 
>getColumnVal("data_elementID")); ?>"><?php echo($category- 
>getColumnVal("element_name")); ?></option>
<?php
$category->moveNext();
} //dyn select
$category->moveFirst();
?>
</select>
</div>
<div class="col-xs-2">
<button type="button" id="search_rightAll" class="btn btn-block"><i 
class="glyphicon glyphicon-forward"></i></button>
<button type="button" id="search_rightSelected" class="btn btn- 
block"><i class="glyphicon glyphicon-chevron-right"></i></button>
<button type="button" id="search_leftSelected" class="btn btn- 
block"><i class="glyphicon glyphicon-chevron-left"></i></button>
<button type="button" id="search_leftAll" class="btn btn-block"><i 
class="glyphicon glyphicon-backward"></i></button>
</div>
<div class="col-xs-5">
<select name="data_elementID[]" id="search_to" class="form-control" 
size="15" multiple="multiple">
</select>
</div>
</div>
<p>&nbsp;</p>
<h4>Please select the district(s) that use this resource that you 
would like to assign these data elements to:</h4>
<div class="row">
<div class="col-xs-5"> 
<select name="from[]" id="search2" class="form-control" size="15" 
multiple="multiple">
<?php
while(!$districts_selected->atEnd()) { //dyn select
?>
<option value="<?php echo($districts_selected- 
>getColumnVal("districtID")); ?>"><?php echo($districts_selected- 
>getColumnVal("district_name")); ?></option>
<?php
$districts_selected->moveNext();
} //dyn select
$districts_selected->moveFirst();
?>
</select>
</div>
<div class="col-xs-2">
<button type="button" id="search2_rightAll" class="btn btn-block"><i 
class="glyphicon glyphicon-forward"></i></button>
<button type="button" id="search2_rightSelected" class="btn btn- 
block"><i class="glyphicon glyphicon-chevron-right"></i></button>
<button type="button" id="search2_leftSelected" class="btn btn- 
block"><i class="glyphicon glyphicon-chevron-left"></i></button>
<button type="button" id="search2_leftAll" class="btn btn-block"><i 
class="glyphicon glyphicon-backward"></i></button>
</div>
<div class="col-xs-5">
<select name="districtID[]" id="search2_to" class="form-control" 
size="15" multiple="multiple">
</select>
</div>
</div>
<?php
$wa_startindex = 0;
while(!$category->atEnd()) {
$wa_startindex = $category->Index;
?>
<input name="softwareID[]" type="hidden" multiple="multiple" value=" 
<?php echo $_GET['softwareID']; ?>">
<?php
$category->moveNext();
}
$category->moveFirst(); //return RS to first record
unset($wa_startindex);
unset($wa_repeatcount);
?>            
<br><br>
<input type="image" src="images/save.png" name="submit" id="submit" 
alt="Save" />
</form>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('#search').multiselect({
search: {
left: '<input type="text" name="q" class="form-control" 
placeholder="Search..." />',
right: '<input type="text" name="q" class="form-control" 
placeholder="Search..." />',
},
fireSearch: function(value) {
return value.length > 3;
}
});
});
</script>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('#search2').multiselect({
search: {
left: '<input type="text" name="q" class="form-control" 
placeholder="Search..." />',
right: '<input type="text" name="q" class="form-control" 
placeholder="Search..." />',
},
fireSearch: function(value) {
return value.length > 3;
}
});
});
</script>

这是我的插入代码:

<?php
$dbh = new PDO("mysql:host=$hostname;dbname=mspa",$user,$pass);
?>
<?php
$array = 
array($_POST['districtID'], $_POST['softwareID'], 
$_POST['data_elementID']);
// pdo example
$sql = 'INSERT INTO district_data_elements (districtID, softwareID, 
data_elementID) VALUES (:value1, :value2, :value3)';

// $dbh is pdo connection
$insertTable = $dbh->prepare($sql);

$countArray = count($array);
$i = 0;

while ($i < $countArray) {
   $insertTable->bindParam(':value1', $array[1][$i], PDO::PARAM_INT); 
   // if value is int
   $insertTable->bindParam(':value2', $array[2][$i], PDO::PARAM_STR); 
   // if value is str
   $insertTable->bindParam(':value3', $array[3][$i], PDO::PARAM_STR);
   $insertTable->execute();

   $i++;
}
?>
php mysqli 插入

评论

1赞 WillardSolutions 2/16/2019
虽然,你并没有真正告诉我们问题是什么/什么没有按预期工作,但你可以尝试将你的语句移动到 while 循环中prepare
0赞 user2048308 2/20/2019
我已经尝试了这么多版本的代码,但似乎无法使任何事情正常工作。差不多,对于每个选定的地区,我都需要它为每个数据元素创建一个记录。例如,如果选择了 X 和 Y 区,并选择了数据元素 A 和 B,则应将 X、A 和 X、B 和 Y、A 和 Y、B 的记录添加到数据库中。这有意义吗?

答: 暂无答案