以下代码希望获取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
答案 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'];
}