繁体   English   中英

如何使用foreach循环插入多个项目

[英]How to insert multiple items using foreach loop

我一直在尝试在 php 和 mysql 中使用 foreach 循环插入多个项目。 当我插入它的插入空值时。 关于我应该解决什么问题的任何想法?

  $itemNo = $statement->fetchColumn();

        $item_name =  ($_POST["item_name"]);

        $item_price =  ($_POST["item_price"]);

        $item_quantity = ($_POST["item_quantity"]);

        $item_total =  ($_POST["item_total"]);

    $statement = $connect->prepare("
      INSERT INTO product 
      ( `item_no`,`item_name`, `item_price`, `item_quantity`, `item_total`)
      VALUES ('$itemNo','$item_name','$item_price','$item_quantity','$item_total')
    ");

    foreach($_POST["item_name"] as $subscription){
    $statement->execute(
      array(
        ':itemNo'                   =>  $itemNo,
        ':item_name '               =>  trim($_POST["item_name"]),
        ':item_price'               =>  trim($_POST["item_price"]),
        ':item_quantity'            =>  trim($_POST["item_quantity"]),
        ':item_total'               =>  trim($_POST["item_total"])
      )
    );
  }

您需要在查询中放置占位符,而不是变量,以匹配对execute()的调用中的参数。

$statement = $connect->prepare("
  INSERT INTO product 
  ( `item_no`,`item_name`, `item_price`, `item_quantity`, `item_total`)
  VALUES (:itemNo,:item_name,:item_price,:item_quantity,:item_total)
");

如果$_POST['item_name']是一个数组,则不能使用trim($_POST['item_name'])作为值。 trim()的参数必须是一个字符串,而不是一个数组。 如果这些 post 变量都是数组,则需要对它们进行索引。

foreach ($item_name as $index => $subscription) {
    $statement->execute(
        array(
            ':itemNo'                   =>  $itemNo,
            ':item_name '               =>  trim($subscription),
            ':item_price'               =>  trim($item_price[$index]),
            ':item_quantity'            =>  trim($item_quantity[$index]),
            ':item_total'               =>  trim($item_total[$index])
        )
    );
}

暂无
暂无

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

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