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

时间:2018-02-13 10:27:39

标签: php mysql

我一直试图在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"])
      )
    );
  }

1 个答案:

答案 0 :(得分:3)

您需要在查询中放置占位符,而不是变量,以匹配调用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])
        )
    );
}