我如何计算字段中的循环和设置值

时间:2016-04-22 20:48:12

标签: php mysql

我有以下代码将1行转换为多行或记录以创建装配项的BOM结构有些具有3个组件/项目,另一个具有2,1或更多。

当我运行此脚本时,如果Assembly只有一个组件,则需要最后一次INSERT查询来创建记录。在黄色突出显示的第一个记录上的附加图像上 - bomEntry字段应该显示1而不是3,因为它只有一个组件。

如果Assembly有两个BOM,请说组件A有组件A1和A2。它应显示为

    Item   PartiD  bomEntry
    A      A1      1
    A      A2      2

目前在表格中插入我的数据时如下所示。 enter image description here

   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

1 个答案:

答案 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>";
}