2016-12-03 14 views
2

mysqlデータベースに "inventory_item"という名前のテーブルがあります。 「id」、「product_category_id」および「quantity」は表の列です。 "id"は主キーで、レコードが挿入されると自動生成されます。mysqlデータベースのテーブルに存在しない場合は、複数のレコードを更新または挿入します

phpを使用してテーブルに複数のレコードを挿入するために作成されたsubmitボタンをクリックすると、product_category_idsのすべてのデータとその数量がforeachループで収集されます。

このように、複数のレコードを同時に挿入する必要があります。新しいレコードとして挿入しないで「product_category_id」がすでにテーブルに存在する場合にのみ、数量を更新する必要があります。

コードブロックは、ここでは..です

foreach ($dataArray as $value) { 

    $pcid = $value["pcid"]; 
    $quantity = $value["quantity"]; 

    $sql = "SELECT * FROM inventory_item WHERE product_category_id='$pcid'"; 
    $result = $conn->query($sql); 
    $row = mysqli_fetch_assoc($result); 
    $currentQuantity = $row['quantity']; 

    $newQuantity = $quantity + $currentQuantity; 

    if ($result == true) { 

     $sql2 = "IF EXISTS (SELECT * FROM inventory_item WHERE product_category_id='$pcid') UPDATE inventory_item SET quantity=$newQuantity WHERE product_category_id=’$pcid’ ELSE INSERT INTO inventory_item (product_category_id, quantity) VALUES ('$pcid', '$quantity')"; 
     $result = $conn->query($sql2); 
    } else { 
     echo 'error'; 
    } 

} 
+2

可能重複配向更新[MySQLの更新を、またはすでにテーブルに存在しない場合は、複数のレコードを挿入](HTTP挿入.com/questions/40945361/mysql-update-or-insert-multiple-records-if-already-in-a-table) –

答えて

1
$result = $conn->query($sql); 

はいつも、これは常にtrueになりますリソースを返します、あなたはしかし、返される行数をチェックすることをお勧めします。 // stackoverflowの:何行が存在しない場合ので、それ以外の場合

if(mysqli_num_row($result) == 0) { 
    //no rows insert 
} else { 
    //row exist do whatever you need 
} 

またはオブジェクト内の

if($result->num_rows == 0) { 
    //row doesn't exist 
+0

ありがとうございます。私はこれを試してみる。 –

+0

ありがとうございます。問題は解決されました。 –

+0

あなたは大歓迎です – Fabio

関連する問題