使用Foreach进行MYSQL INSERT

时间:2018-03-09 12:40:48

标签: php

当我想添加

data1 sum1
data2 sum2

到数据库, 实际发生了什么:

data1 data1
sum1 sum1
data2 data2
sum2 sum2

我的表单元素是;

<input id="alan_" name="alanlar[]" type="text" class="form-control">
<input id="miktar_" name="alanlar[]" type="text" class="form-control">

和PHP;

foreach ($_POST['alanlar'] as $key => $value) {

            $baglanti->query(sprintf("INSERT INTO ders (ders_adi, ders_miktar) VALUES ('%s','%s')", ($value),($value)));
            $eklenen_ders_id = $baglanti->insert_id;

Jquery代码:

var sayac = 1;
    $(function () {
        $('#ekle').click(function () {
            sayac += 1;
            $('#dersler tbody').append(
                '<tr><th><strong>Ders ' + sayac + '</strong></th><td><input id="alan_' + sayac + '" name="alanlar[]' + '" type="text" class="form-control" /></td><td><input id="miktar_' + sayac + '" name="alanlar[]' + '" type="text" class="form-control" /></td><td><a href="#" class="sil btn btn-danger">Sil</a></td></tr> ');
        });

谢谢大家。

2 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您将两个值都带到单个数组,因此您无法区分它们。 Foreach对两个值都运行两次,并且您为两列插入相同的值。

要解决此问题,请为这两个值采用不同的名称或定义不同的数组键。

<input id="alan_" name="data[]" type="text" class="form-control">
<input id="miktar_" name="sum[]" type="text" class="form-control">

然后迭代一个数组并在另一个数组中使用该键,因为这两个都是文本字段,这不会有问题。像这样迭代:

foreach ($_POST['data'] as $key => $value) {
    $baglanti->query(sprintf("INSERT INTO ders (data, sum) VALUES ('%s','%s')", ($value),($_POST['sum'][$key])));
    $eklenen_ders_id = $baglanti->insert_id;
}

希望它有所帮助。

答案 1 :(得分:-3)

明智地设置表单控件名称大大增强了服务器上的表单数据处理:

HTML

<input name="alanlar[0][alan]" type="text" class="form-control">
<input name="alanlar[0][miktar]" type="text" class="form-control">
<input name="alanlar[1][alan]" type="text" class="form-control">
<input name="alanlar[1][miktar]" type="text" class="form-control">
<!-- etc. -->

PHP

foreach ($_POST['alanlar'] as $set) {
  $alan = $set['alan'];
  $miktar = $set['miktar'];
  // ...
}