Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果值与另一个表值匹配,则更新表行_Php_Mysql - Fatal编程技术网

Php 如果值与另一个表值匹配,则更新表行

Php 如果值与另一个表值匹配,则更新表行,php,mysql,Php,Mysql,我正在做一个价格比较的事情,比如这个例子,假设我有两个表。产品和CPU products是所有类别的所有产品的表,它包含产品的SKU、产品类型、最低价格、比较的各个门店的价格、比较的各个门店的链接以及比较的门店的目录号,因此我可以通过查看门店的目录号来更新价格 假设我只有一家商店从中获取产品,情况会是这样的: +------------+------+-------+---------------+-----------------+--------------------------+ |

我正在做一个价格比较的事情,比如这个例子,假设我有两个表。产品和CPU

products是所有类别的所有产品的表,它包含产品的SKU、产品类型、最低价格、比较的各个门店的价格、比较的各个门店的链接以及比较的门店的目录号,因此我可以通过查看门店的目录号来更新价格

假设我只有一家商店从中获取产品,情况会是这样的:

+------------+------+-------+---------------+-----------------+--------------------------+
|    SKU     | type | price | store_1_price | store_1_catalog |       store_1_link       |
+------------+------+-------+---------------+-----------------+--------------------------+
| 20q5ekGMLw |    1 |  1064 |          1064 | YD1600BBAEBOX   | randomlink.com/linkylink |
+------------+------+-------+---------------+-----------------+--------------------------+
然后,我为每个产品类别创建了一个表,在表中我存储了关于每个产品的更多详细规格

例如,计算机处理器的cpu表将包含产品名称、产品SKU、cpu插槽、频率、TDP、核心等

要可视化:

+------------------------------------+-------------+-------+-----------+-------+--------------+----------+
|                name                |     SKU     | price | frequency | cores | manufacturer |  socket  |
+------------------------------------+-------------+-------+-----------+-------+--------------+----------+
| i5-6600K Skylake Quad core  - Tray | 20q5ekGMLw  | 1064  |       3.5 |     4 | Intel        | LGA-1151 |
+------------------------------------+-------------+-------+-----------+-------+--------------+----------+
现在,我想更新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
       }

我已经做了在数据库中找不到产品的部分,所以我必须添加它。我需要更新产品的部分是我遇到困难的地方,如果SKU是目录已经存在于“产品”表中的同一SKU,我如何更新“CPU”表中的价格?

如果SKU在变量$SKU中可用,您可以使用以下查询-

更新CPU设置价格=从产品中选择价格,其中SKU=“$SKU”,其中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'");
   }

请注意代码可能会中断,因为它未经测试。如果有,我会立即用测试过的代码进行更新

我没有这个变量,但是你的评论帮助我弄明白了,我成功地使它工作了。谢谢