PHP Shopify集成-变量删除
我正在开发一个集成到shopify的PHP应用程序。基本上,“商店”和应用程序之间必须同步产品信息。在产品内部,我们有变体(类似于子产品)。Shopify用来发送带有json数据的Webhook来报告这些更改。每次我更改/添加/删除变体时,shopify都会发送一个“产品更新”webhook,该webhook只更改json内容。这是一个例子:PHP Shopify集成-变量删除,php,shopify,Php,Shopify,我正在开发一个集成到shopify的PHP应用程序。基本上,“商店”和应用程序之间必须同步产品信息。在产品内部,我们有变体(类似于子产品)。Shopify用来发送带有json数据的Webhook来报告这些更改。每次我更改/添加/删除变体时,shopify都会发送一个“产品更新”webhook,该webhook只更改json内容。这是一个例子: { ... "variants": [{ "id": 279656846, "position": 1,
{
...
"variants": [{
"id": 279656846,
"position": 1,
"price": "80.00",
"product_id": 123022448,
"sku": "1000",
"option1": "30 cm",
"inventory_quantity": 10
},
{
"id": 291321287,
"position": 2,
"price": "15.00",
"product_id": 123022448,
"sku": "1003",
"option1": "15 cm",
"inventory_quantity": 23
}],
...
}
如果我创建了一个新的变体,它会向我发送一个当前状态的“产品更新”,并且新的变体是json格式的。类似地,如果我删除,它只向我发送当前状态的“产品更新”,但没有json中已删除的变量
我创建了以下代码,可以正确处理更改/添加案例:
foreach ($jsonArr['variants'] as $rows) {
$variant = $rows['option1'];
$sku = $rows['sku'];
$salesPrice = $rows['price'];
$stockQty = $rows['inventory_quantity'];
$idVar = $rows['id'];
$dupchk = mysql_query("SELECT * FROM `variants` WHERE `idVar`='$idVar'",$con) or die (mysql_error());
$num_rows = mysql_num_rows($dupchk);
if ($num_rows > 0) {
$sql = "UPDATE `variants` SET `variant`='$variant',`sku`='$sku',`salesPrice`='$salesPrice',`stockQty`='$stockQty' WHERE `idVar`='$idVar'";
if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
}
else {
$sql = "INSERT INTO `variants`(`idVariant`, `idProduct`, `variant`, `sku`, `salesPrice`, `stockQty`, `comments`, `idVar`) VALUES ('','$idProduct','$variant','$sku','$salesPrice','$stockQty','','$idVar')";
if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
}
}
问题是此代码不处理delete variant情况。我曾尝试过这样做,但直到现在,我只创建了一个无法工作的“大混乱”代码。如果您有任何建议,请告知如何明智地处理此问题。为了解决此问题,我使用了以下代码:
//Variable to count variant update or create
$var_count = 0;
foreach ($jsonArr['variants'] as $rows) {
$variant = $rows['option1'];
$sku = $rows['sku'];
$salesPrice = $rows['price'];
$stockQty = $rows['inventory_quantity'];
$idVar = $rows['id'];
$dupchk = mysql_query("SELECT * FROM `variants` WHERE `idVar`='$idVar'",$con) or die (mysql_error());
$num_rows = mysql_num_rows($dupchk);
if ($num_rows > 0) {
$sql = "UPDATE `variants` SET `variant`='$variant',`sku`='$sku',`salesPrice`='$salesPrice',`stockQty`='$stockQty' WHERE `idVar`='$idVar'";
$var_count++;
if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
}
else {
$sql = "INSERT INTO `variants`(`idVariant`, `idProduct`, `variant`, `sku`, `salesPrice`, `stockQty`, `comments`, `idVar`) VALUES ('','$idProduct','$variant','$sku','$salesPrice','$stockQty','','$idVar')";
$var_count++;
if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
}
}
//Start checking to erase variant if needed
$result = mysql_query("SELECT `idVar` FROM products NATURAL JOIN variants WHERE `idShopify`='$idShopify'",$con);
$num_rows = mysql_num_rows($result);
if ($num_rows>$var_count) {
while($row = mysql_fetch_array($result))
{
$clear = 0;
foreach ($jsonArr['variants'] as $rows) {
if ($rows['id']==$row['idVar']) {
$clear++;
}
}
if ($clear==0) {
$idVar = $row['idVar'];
$sql = "DELETE FROM `variants` WHERE `idVar`='$idVar'";
if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
}
}
}
这不是优雅,而是做工。请随意提出代码改进建议