我有以下代码将1行转换为多行或记录以创建装配项的BOM结构有些具有3个组件/项目,另一个具有2,1或更多。
当我运行此脚本时,如果Assembly只有一个组件,则需要最后一次INSERT查询来创建记录。在黄色突出显示的第一个记录上的附加图像上 - bomEntry字段应该显示1而不是3,因为它只有一个组件。
如果Assembly有两个BOM,请说组件A有组件A1和A2。它应显示为
Item PartiD bomEntry
A A1 1
A A2 2
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
答案 0 :(得分:1)
使用在每个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>";
}