我有一个动态多输入。提交表单时,插入数组值。但我想插入没有'submit'的值。 这是foreach循环,(不包括sql secure)
if (isset($_POST['submit'])) {
$nearest = $db->prepare('insert into nearest set place=?, distance=?');
$i = 0;
foreach ($_POST as $val) {
$place = $_POST['place'][$i];
$distance = $_POST['distance'][$i];
$nearest->execute([$place, $distance]);
$i++;
}
}
此循环插入'$ _POST'值并插入空行。
答案 0 :(得分:1)
如果你想保持循环,你可以使用array_slice不包括循环中的最后一项 Array_slice将从0(不是文字,但第一项)到秒到最后(-1)的项目 http://php.net/manual/en/function.array-slice.php
EDIT;我认为你需要一个for循环来循环“地点”的计数。
if (isset($_POST['submit'])) {
$nearest= $db -> prepare('insert into nearest set place=?, distance=?');
for($i=0; $i< count($_POST['place']; $i++){
$place = $_POST['place'][$i];
$distance= $_POST['distance'][$i];
$nearest-> execute([$place , $distance]);
$i++;
}
}
答案 1 :(得分:0)
您可以在使用常规submit
进行循环之前,从$_POST
中删除unset()
密钥。但这是不好的方法。我宁愿推荐做的是&#34;隔离&#34;你的数据,而不是:
<input name="distance" ... >
让你所有的投入都是这样的:
<input name="data[distance]" ... >
然后你只需要循环过来&#34;数据&#34; (你喜欢的名字)数组:
foreach($_POST['data'] as val)
此外,抵制在盲人中删除最后一个元素,因为它基于错误的假设,这总是你的&#34;提交&#34;元件。如果您向表单添加更多提交按钮怎么办?或者订单会改变吗?