簡體   English   中英

如果值與另一個表值匹配,則更新表行

[英]Update table row if value match another table value

我正在做一個價格比較的事情,對於這個例子,假設我有2張桌子。 productscpus

產品是所有類別所有產品的表格,它具有產品的SKU,產品類型,最低價格,比較各個商店的價格,比較各個商店的鏈接以及比較各個商店的目錄號(因此我可以通過查看商店的目錄號來更新價格)。

看起來像這樣(假設我只有1家商店,我正在從中提取產品):

+------------+------+-------+---------------+-----------------+--------------------------+
|    SKU     | type | price | store_1_price | store_1_catalog |       store_1_link       |
+------------+------+-------+---------------+-----------------+--------------------------+
| 20q5ekGMLw |    1 |  1064 |          1064 | YD1600BBAEBOX   | randomlink.com/linkylink |
+------------+------+-------+---------------+-----------------+--------------------------+

然后我為每個產品類別都有一張表格,其中存儲了有關每個產品的更多詳細規格。

例如,表cpus (用於計算機處理器)將具有產品名稱,產品SKU,CPU插槽,頻率,TDP,芯數等。

可視化:

+------------------------------------+-------------+-------+-----------+-------+--------------+----------+
|                name                |     SKU     | price | frequency | cores | manufacturer |  socket  |
+------------------------------------+-------------+-------+-----------+-------+--------------+----------+
| i5-6600K Skylake Quad core  - Tray | 20q5ekGMLw  | 1064  |       3.5 |     4 | Intel        | LGA-1151 |
+------------------------------------+-------------+-------+-----------+-------+--------------+----------+

現在,我要UPDATE (如果SKU在產品中 )或INSERT (如果SKU在數據庫中)。

因此,它應該是這樣的:

$checkdb= $conn->query("SELECT * FROM `products` WHERE `store_1_catalog`='".$catalog."'");
        if($checkdb->num_rows==0)
        {
        //if product not in db,add it
        }
       else{ //products in database, update it.
      //update price in 'cpus' table where the SKU is the same SKU whose catalog already exists in the 'products' table
       }

我已經做過在數據庫中找不到產品的部分,所以我必須添加它。 我需要更新產品的部分是我遇到困難的地方,如何在“ cpus”表中更新價格,其中SKU“ products”表中已經存在其目錄的同一SKU

如果變量$sku有SKU,則可以使用以下查詢-

UPDATE cpus SET price = (SELECT price from products WHERE SKU = '$sku') WHERE SKU = '$sku';

查看您的代碼,建議您執行以下操作-

$checkdb = $conn->query("SELECT * FROM `products` WHERE `store_1_catalog`='".$catalog."'");

   if($checkdb->num_rows==0)
    {
         //if product not in db,add it
    }
   else{
      //products in database, update it.
      //update price in 'cpus' table where the SKU is the same SKU whose catalog already exists in the 'products' table

      $row = $checkdb->fetch_array(MYSQLI_ASSOC);
      $sku = $row["SKU"];
      $conn->query("UPDATE cpus SET price = (SELECT price from products WHERE SKU = '$sku') WHERE SKU = '$sku'");
   }

請注意,該代碼可能會中斷,因為未經測試。 如果是這樣,我將立即更新經過測試的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM