每隔X个小时,我就使用核心php从RSS将数据导入mysql,但我正努力处理重复的条目。
$rss_url = 'https://promograd.bg/feed/agg/common.xml?a=143';
$xml = simplexml_load_file($rss_url);
foreach($xml->ITEM as $item) {
$title = mysqli_real_escape_string($link, $item->TITLE);
$offerUrl = $item->URL;
$description = mysqli_real_escape_string($link, $item->DESCRIPTION);
$offerTerms = mysqli_real_escape_string($link, $item->TERMS);
$originalPrice = $item->ORIGINAL_PRICE;
$finalPrice = $item->FINAL_PRICE;
$offerDiscount = $item->DISCOUNT;
$offerSales = $item->SALES;
$offerEnds = $item->DEAL_END;
$lat_coordinates = $item->LAT;
$lng_coordinates = $item->LNG;
$city = mysqli_real_escape_string($link, $item->CITY);
$category = mysqli_real_escape_string($link, $item->CATEGORY);
$img = $item->IMAGE;
$query = mysqli_query($link, "
INSERT INTO......
}
我的问题是,当我运行此脚本时,它将导入相同的结果,但没有太多新的内容。如何避免重复的结果?
答案 0 :(得分:1)
例如,如果您要检查标题是否重复,可以尝试以下操作:-
$rss_url = 'https://promograd.bg/feed/agg/common.xml?a=143';
$xml = simplexml_load_file($rss_url);
$tempRecords = array(); // temp array store titles
foreach($xml->ITEM as $item) {
$title = mysqli_real_escape_string($link, $item->TITLE);
if(in_array($title, $tempRecords)){ //skip if exists
continue;
}else{ // else insert
//$title = mysqli_real_escape_string($link, $item->TITLE);
$tempRecords[] = $title; //assign to temp array
$offerUrl = $item->URL;
$description = mysqli_real_escape_string($link, $item->DESCRIPTION);
$offerTerms = mysqli_real_escape_string($link, $item->TERMS);
$originalPrice = $item->ORIGINAL_PRICE;
$finalPrice = $item->FINAL_PRICE;
$offerDiscount = $item->DISCOUNT;
$offerSales = $item->SALES;
$offerEnds = $item->DEAL_END;
$lat_coordinates = $item->LAT;
$lng_coordinates = $item->LNG;
$city = mysqli_real_escape_string($link, $item->CITY);
$category = mysqli_real_escape_string($link, $item->CATEGORY);
$img = $item->IMAGE;
$query = mysqli_query($link, "
INSERT INTO......
}
}
您也可以使用mysql查询来完成此操作,请参考链接
https://ypereirareis.github.io/blog/2016/03/22/mysql-insert-ignore-alternatives/
答案 1 :(得分:0)
在表上为您不想重复的列添加唯一键。或者,您也可以将唯一键放在多个列上,例如标题和URL的组合。
现在处于惰性查询
使用insert ignore
避免插入重复的条目
或在发现重复条目时使用on duplicate key update
更新某些字段。例如,如果您想为相同的现有记录更新新价格。