Php 从RSS导入时如何避免重复结果
我正在使用核心php将数据从RSS导入mysql,每x小时导入一次,但我正在努力处理重复条目Php 从RSS导入时如何避免重复结果,php,mysql,rss,Php,Mysql,Rss,我正在使用核心php将数据从RSS导入mysql,每x小时导入一次,但我正在努力处理重复条目 $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->TI
$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......
}
我的问题是,当我运行此脚本时,它将导入相同的结果,但没有太多新结果。。如何避免重复结果?例如,如果要检查标题是否重复,可以尝试以下方法:-
$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/
为不希望复制的列在表上放置唯一键。或者,您也可以在多个列上放置唯一键,如标题和url的组合 现在进入惰性查询 使用insert ignore可避免插入重复条目
或者在发现重复条目时,使用“重复密钥更新”更新某些字段。例如,如果您想为相同的现有记录更新新价格。使用“链接上插入忽略”,因为链接将始终是唯一的。您想检查哪个节点的重复项?@RakeshJakhar title例如,不要检查重复项的标题。多篇文章的标题可以相同。但是帖子的链接总是唯一的,检查重复的逻辑在哪里?您是否在数据库中使用索引?