在检查mysql行是否存在时,foreach中的嵌套if / then语句失败

时间:2016-02-11 15:32:22

标签: php mysql

以下代码希望获取json feed并将其作为新记录插入到mysql数据库中,或者如果该记录已存在,则仅更新现有记录中的几个选择字段。我不能让代码覆盖完整的现有记录,因为现有记录中的字段可能已被用户修改过,我不能丢失对udpate的修改。

代码几乎每条记录都执行IF和ELSE。我假设在foreach循环中我的逻辑或语法有问题。这些记录中有99.99%已经存在。

非常感谢任何帮助。

$response = json_decode($response, true);

// Set specified data from response
$data = $response['data'];

// Loop through the data array

mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

foreach ($data as $item)
{

$result = mysql_query("SELECT 1 FROM prosp_rawdata WHERE productId = '".$item['productId']."' LIMIT 1");

if (mysql_fetch_row($result)) {
mysql_query("UPDATE SET `affiliate_url` = '".$item['affiliate_url']."', `image_url` = '".$item['image_url']."', `price` = '".$item['price']."', `price_sale` = '".$item['price_sale']."', `percentOff` = '".$item['percentOff']."', `merchant` = '".$item['merchant']."', `dateupdate` = NOW() WHERE  `prosp_rawdata`.`productId` = '".$item['productId']."'");

echo "\n\n record exists: ";
echo $item['productId'];

}

else{
mysql_query("INSERT INTO prosp_rawdata (catalogId,productId,date,affiliate_url,image_url,keyword,keywords,description,category,price,price_sale,percentOff,merchant,brand,upc) VALUES ('".$item['catalogId']."', '".$item['productId']."', NOW(), '".$item['affiliate_url']."', '".$item['image_url']."', '".$item['keyword']."', '".$item['keywords']."', '".$item['description']."', '".$item['category']."', '".$item['price']."', '".$item['price_sale']."', '".$item['percentOff']."', '".$item['merchant']."', '".$item['brand']."', '".$item['upc']."')");
}

echo "\n\n NEW RECORD: ";
echo $item['productId'];

}
}
mysql_close();

输出示例:

 NEW RECORD: a78d543c5c758ded5aea731f3ec83e79

 record exists: dae594b2082ef6002b658bbb638cc885

 NEW RECORD: dae594b2082ef6002b658bbb638cc885

 record exists: 50372f83b7a06ee2c27a2a773719d58d

 NEW RECORD: 50372f83b7a06ee2c27a2a773719d58d

 record exists: 568967b1ec527322419613d27d8e47c2

 NEW RECORD: 568967b1ec527322419613d27d8e47c2

 record exists: da2fb0cc5a0be2457c4cbb9e9d08c502

 NEW RECORD: da2fb0cc5a0be2457c4cbb9e9d08c502

1 个答案:

答案 0 :(得分:1)

缺乏制表使其难以阅读。但似乎你的回声"在"其他"之外括号括起来。他们将一直这样打电话。

尝试更改为:

else{
    mysql_query("INSERT INTO prosp_rawdata (catalogId,productId,date,affiliate_url,image_url,keyword,keywords,description,category,price,price_sale,percentOff,merchant,brand,upc) VALUES ('".$item['catalogId']."', '".$item['productId']."', NOW(), '".$item['affiliate_url']."', '".$item['image_url']."', '".$item['keyword']."', '".$item['keywords']."', '".$item['description']."', '".$item['category']."', '".$item['price']."', '".$item['price_sale']."', '".$item['percentOff']."', '".$item['merchant']."', '".$item['brand']."', '".$item['upc']."')");
    echo "\n\n NEW RECORD: ";
    echo $item['productId'];    
}