Php 在数组中插入多行只插入一条记录

Php 在数组中插入多行只插入一条记录,php,mysql,Php,Mysql,我在将多个记录插入数据库时遇到问题。 当我提交表单时,只插入一条记录。我不是在重复我确定的post数据。请帮忙 PHP代码: $cid = $_POST['item_cid']; $pcode = $_POST['item_code']; $pname = $_POST['item_name']; $pprice = $_POST['item_price']; $pqty = $_POST['item_qty'];

我在将多个记录插入数据库时遇到问题。 当我提交表单时,只插入一条记录。我不是在重复我确定的post数据。请帮忙

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...'; 

}

?>

但结果是一样的:(

在表单中发送和隐藏变量,并从中发送总计数。 并且在“通过$邮政获取”['hiddenval']

从0开始for循环,直到hdden值计数。 和使用一样 $cid=mysql\u real\u escape\u字符串($\u POST['item\u cid'.$i]); 这里$i是循环计数器。 您将以类似的方式获取所有记录

您正在混合使用mysqlmysqli,这可能会导致错误

        $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...'; 

}

?>
您还可以在
array\u map
函数中使用
mysqli\u real\u escape\u 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;
     }
    }
$cid=mysql\u real\u escape\u字符串($\u POST['item\u cid']);
^^^
foreach($\u POST['item\u cid']作为$key=>$value){
$cid=mysqli\u real\u escape\u字符串($connection,$value);
$pcode=mysqli\u real\u escape\u string($connection,$\u POST['item\u code'][$key]);
$pname=mysqli\u real\u escape\u string($connection,$\u POST['item\u name'][$key]);
$pprice=mysqli\u real\u escape\u字符串($connection,$\u POST['item\u price'][$key]);
$pqty=mysqli\u real\u escape\u字符串($connection,$\u POST['item\u qty'][$key]);
$sql=“在订单中插入(cid、ordprod_代码、ordprod_名称、ordprod_价格、ordprod_数量、ord_日期)值(“$value”、“$pcode”、“$pname”、“$pprice”、“$pqty”、”);
如果($connection->query($sql)==TRUE){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.“
”$conn->Error; } }
检查它是否工作,并在执行此操作时告知我是否需要进一步更改 $cid=mysql\u real\u escape\u字符串($cid[$i]);
通过为数组($cid[])变量本身分配数组元素,可以将数组($cid)转换为单值($cid)。因此,当第一个循环完成时,$cid的长度将始终变为1。这就是为什么循环只运行一次并插入一行。您应该使用不同的临时变量。

您得到的是
$cid
(所有变量)通过post方法检索一个数据访问-@SagarNaliyapara谢谢,我找到了我一直在寻找的答案。在搜索我的问题时,我在某处找到了相同的解决方案,但不知道如何计算所有输入字段。感谢穆罕默德·艾哈迈德,我找到了答案。我正在使用
mysqli
:(
注意:使用未定义常量mysqli_real_escape_string-假定为'mysqli_real_escape_string'
警告:mysqli_real_escape_string()需要2个参数,1个给定的@yaqoob我已经更新了我的答案我有一个错误,我忘了放置倒逗号。
   $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;
     }
    }