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

标签 php mysql

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

该代码几乎对每条记录都执行 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

最佳答案

缺乏表格导致阅读起来很困难。但看来你的“echo ”在“else”括号之外。他们将一直以这种方式被调用。

尝试更改为:

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'];    
}

关于php - 检查 mysql 行是否存在时,foreach 中的嵌套 if/then 语句失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35343487/

相关文章:

php - MySQL UPDATE 查询无法从 PHP 运行

php - MySql 对不同输入字段的查询,其中一些字段为 NULL

java - 如何使用 JDBI 的 Sql 对象 API 在运行时创建动态 Sql 查询?

php - 如何计算 MySQL 中表上的结果

php - App::singleton 和 bindShared 有什么区别?

php - 从包含变量的表单中将变量插入 MYSQL

php - 使用 hmac 保护 javascript 客户端

mysql - 统计MySQL中时间范围内的条目数

php - 按连续小时获取sql

php - 我想使用 AJAX 函数验证验证码