我有以下代码将一行转换成多行或记录,以创建装配项目的BOM结构有些有3个组件/项目,另一些有2,1个或更多。
运行此脚本时,如果程序集只有一个组件,则需要最后一个插入查询来创建记录。在第一条以黄色突出显示的记录的附加图像上,bomEntry字段应该显示1而不是3,因为它只有一个组件。
如果组件有两个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
最佳答案
使用在每个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>";
}