繁体   English   中英

在数组中插入多行仅插入1条记录

[英]Inserting multiple rows in array inserts only 1 record

我在将多个记录插入数据库时​​遇到问题。 当我提交表格时,仅插入1条记录。 我没有迭代我确定的发布数据。 请帮忙!

PHP代码:

        $cid = $_POST['item_cid'];
        $pcode = $_POST['item_code'];
        $pname = $_POST['item_name'];
        $pprice = $_POST['item_price'];
        $pqty = $_POST['item_qty'];

for ($i = 0; $i < count($cid); $i++) {

        $cid = mysql_real_escape_string($cid[$i]);
        $pcode = mysql_real_escape_string($pcode[$i]);
        $pname = mysql_real_escape_string($pname[$i]);
        $pprice = mysql_real_escape_string($pprice[$i]);
        $pqty = mysql_real_escape_string($pqty[$i]);

mysqli_query($connection,"INSERT INTO orders (cid, ordprod_code, ordprod_name, ordprod_price, ordprod_qty, ord_date) VALUES ('$cid', '$pcode', '$pname', '$pprice', '$pqty', '')");
    }
echo 'Records inserted...'; 

}

?>

HTML代码:

<input type="hidden" name="item_cid[0]" value="22795" />
<input type="hidden" name="item_code[0]" value="LS-985" />
<input type="hidden" name="item_name[0]" value="some Product title 1" />
<input type="hidden" name="item_price[0]" value="9999" />
<input type="hidden" name="item_qty[0]" value="2" />

<input type="hidden" name="item_cid[1]" value="22795" />
<input type="hidden" name="item_code[1]" value="SL-055" />
<input type="hidden" name="item_name[1]" value="some Product title x12" />
<input type="hidden" name="item_price[1]" value="9390" />
<input type="hidden" name="item_qty[1]" value="1" />

<input type="hidden" name="item_cid[2]" value="22795" />
<input type="hidden" name="item_code[2]" value="WR-656" />
<input type="hidden" name="item_name[2]" value="some Product title 392" />
<input type="hidden" name="item_price[2]" value="10000" />
<input type="hidden" name="item_qty[2]" value="6" />

and so on

我也尝试了没有这样编号顺序的name arrays

<input type="hidden" name="item_cid[]" value="22795" />
<input type="hidden" name="item_code[]" value="WR-656" />
<input type="hidden" name="item_name[]" value="Some Title" />
<input type="hidden" name="item_price[]" value="10000" />
<input type="hidden" name="item_qty[]" value="6" />

但结果是相同的:(

您正在混合可能导致错误的mysqlmysqli

您也可以在array_map函数中使用mysqli_real_escape_string作为

    $cid = array_map('mysqli_real_escape_string',$_POST['item_cid']);
    $pcode = array_map('mysqli_real_escape_string',$_POST['item_code']);
    $pname = array_map('mysqli_real_escape_string',$_POST['item_name']);
    $pprice = array_map('mysqli_real_escape_string',$_POST['item_price']);
    $pqty = array_map('mysqli_real_escape_string',$_POST['item_qty']);

你在用

   $cid = mysql_real_escape_string($_POST['item_cid']);
              ^^^

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

      $cid = mysqli_real_escape_string($connection,$value);
    $pcode = mysqli_real_escape_string($connection,$_POST['item_code'][$key]);
    $pname = mysqli_real_escape_string($connection,$_POST['item_name'][$key]);
    $pprice = mysqli_real_escape_string($connection,$_POST['item_price'][$key]);
    $pqty = mysqli_real_escape_string($connection,$_POST['item_qty'][$key]);  

      $sql = "INSERT INTO orders (cid, ordprod_code, ordprod_name, ordprod_price, ordprod_qty, ord_date) VALUES ('$value', '$pcode', '$pname', '$pprice', '$pqty', '')";
     if ($connection->query($sql) === TRUE) {
        echo "New record created successfully";
     } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
     }
    }

检查它是否有效,并让我知道是否需要任何进一步的更改

在表单中发送和隐藏变量,并从中发送总数。 并通过$ _POST ['hiddenval']获得它;

从0到该hdden值计数开始for循环。 并使用像$ cid = mysql_real_escape_string($ _ POST ['item_cid'。$ i]); 这里$ i是循环计数器。 您将以类似方式获得所有记录。

当您执行此操作时,$ cid = mysql_real_escape_string($ cid [$ i]); 您本质上是通过将数组元素分配给变量本身来将数组($ cid [])转换为单个值($ cid)。 因此,当第一个循环完成时,$ cid的长度将始终变为1。 这就是循环仅运行一次并插入一行的原因。 您应该使用其他临时变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM