我有以下代码将一行转换成多行或记录,以创建装配项目的BOM结构有些有3个组件/项目,另一些有2,1个或更多。
运行此脚本时,如果程序集只有一个组件,则需要最后一个插入查询来创建记录。在第一条以黄色突出显示的记录的附加图像上,bomEntry字段应该显示1而不是3,因为它只有一个组件。
如果组件有两个bom,假设组件A有组件A1和A2。它应该显示为

    Item   PartiD  bomEntry
    A      A1      1
    A      A2      2

当前在表中插入我的数据时如下所示。
php - 我该如何计算循环并在字段中设置值-LMLPHP
   mysqli_query($con,"INSERT INTO table1 (ItemID,partid,qty,rev,bomEntry) VALUES ($itemid, $bom1,'1','A','1')");
   mysqli_query($con,"INSERT INTO table1 (ItemID,partid,qty,rev,bomEntry) VALUES ($itemid, $bom2,'1','A','2')");
   mysqli_query($con,"INSERT INTO table1 (ItemID,partid,qty,rev,bomEntry) VALUES ($itemid, $bom3,'1','A','3')");

如何计算组件数并设置bomEntry

最佳答案

使用在每个INSERT查询之间递增的变量。另外,使用准备好的查询而不是替换变量。
在插入每个组件之前,检查该组件是否实际存在于记录中。

$stmt = myqsli_prepare($con, "INSERT INTO table1 (ItemID,partid,qty,rev,bomEntry) VALUES (?, ?,'1','A',?)");
mysqli_stmt_bind_param($stmt, "iii", $itemid, $bom, $bomEntry) or die(mysqli_error($con));

$recordd = $tv->search(30008475847254898, 's=2');
foreach($recordd as $data2) {
    $itemid = $data2['fields']['CALC STOCK NO'];

    $bomEntry = 1;
    if ($data2['fields']['BOM WHEEL PN']) {
        $bom = $data2['fields']['BOM WHEEL PN'];
        mysqli_stmt_execute($stmt) or die(mysqli_stmt_error($stmt));
        $bomEntry++;
    }
    if ($data2['fields']['BOM TIRE PN']) {
        $bom = $data2['fields']['BOM TIRE PN'];
        mysqli_stmt_execute($stmt) or die(mysqli_stmt_error($stmt));
        $bomEntry++;
    }
    if ($data2['fields']['BOM VALVE PN']) {
        $bom = $data2['fields']['BOM VALVE PN'];
        mysqli_stmt_execute($stmt) or die(mysqli_stmt_error($stmt));
        $bomEntry++;
    }

    echo "<br>";
}

10-06 11:30