繁体   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