我正在做一个价格比较的事情,对于这个例子,假设我有2张桌子。 products
和cpus
。
产品是所有类别所有产品的表,它具有产品的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
是相同的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'");
}
请注意,该代码可能会中断,因为未经测试。如果是这样,我将立即更新经过测试的代码。
关于php - 如果值与另一个表值匹配,则更新表行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52797094/