首页 > 解决方案 > 如何将多个输入插入到按相同数据分组的同一行中

问题描述

我有一个记录所有用户购买的系统。在我的系统中,我有一个名为purchase_item的表。

purchase_item看起来像这样

ID order_id 产品名称
1 10001 iphoneX
2 10001 ipnone 12 专业版
3 10001 平板电脑
4 10002 苹果笔
5 10002 气垫
6 10002 iPhone 12 Pro Max

这是我在上面插入数据的查询

$osql = "INSERT INTO `purchase_items`(`order_id`, `product_name`) VALUES ('$order_id',`$product_name` )";

现在我创建了另一个表(receipt_table),我想在组中插入上述数据。任何人都知道我该怎么做?

我想要的是我的表的输出看起来像这样:

ID order_id
1 10001
2 10002

我想使用“INSERT INTO”对我的数据进行分组。任何人都知道我该怎么做?

标签: phpsql

解决方案


<?php
$purchased_item = [
  [10001, "iPhoneX"],
  [10001, "iPhone 12 Pro"],
  [10001, "iPad"],
  [10002, "Apple Pen"],
  [10002, "Airpods"],
  [10002, "iPhone 12 Pro Max"]
];

$servername = "localhost";
$username = "root"; //your user name
$password = ""; // your password here
$dbname = "myDB"; // database name

$conn = new mysqli($servername, $username, $password, $dbname);

$osql = "INSERT INTO `purchase_items`(`order_id`, `product_name`) VALUES (?,? )";
$ostmt = $conn->prepare($osql);
$isql = "INSERT INTO reciept_table(`id`, `order_id`) VALUES (?, ?)";
$istmt = $conn->prepare($isql);

$lastId = null; // to check id is entered or not
foreach ($purchased_item as $value) {
  $ostmt->bind_param("is", $value[0], $value[1]);
  $ostmt->execute();
  if ($lastId != $value[0]){
    $istmt->bind_param("i", $value[0]);
    $istmt->execute();
  }
  $lastId = $vlaue[0];
}
?>

推荐阅读