2016-04-22 90 views
1

我有以下代碼轉置1行到多行或記錄來創建組裝物料的BOM結構一些有3個組件/項目另一個有2,1或更多。我如何計算循環和設置值在一個字段

當我運行這個腳本它需要最後一個INSERT查詢來創建一個記錄,如果程序集只有一個組件。在以黃色突出顯示的第一個記錄上的附加圖像 - bomEntry字段應該顯示1而不是3,因爲它只有一個組件。

如果裝配體有兩個物料清單,假設裝配體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

數使用您在每個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>"; 
} 
+0

非常感謝,但在SORCE錶行中列出的所有BOM'A,BOM1,BOM2,BOM3 ...'多數民衆贊成就是爲什麼我使用了三個INSERT語句移調一行到我已經更新了多行 – Kin

+0

顯示如何在該循環內執行插入操作的答案。 – Barmar

+0

再次設置'bomEntry' 3而不是1個BOM /組件的組裝 – Kin