我正在使用以下php代码从xml文件加载数据以插入Mysql,我想在本网站上有新文章时更新此rss feed。
<?php
mysql_connect("localhost","root","");
mysql_select_db("rss") ;
$feeds = array('http://mywebsite.com/index.php?format=feed&type=rss');
foreach( $feeds as $feed ) {
$xml = simplexml_load_file($feed);
foreach($xml->channel->item as $item)
{
$date_format = "j-n-Y"; // 7-7-2008
echo '<style type="text/css">.style1 { direction: rtl;</style><p class="style1">';
echo $item->pubDate;
echo '<br><a href="'.$item->link.'" target="_blank">'.$item->title.'</a><br>';
echo '<div>' . $item->description . '</div><br><br><br><hr><br>';
echo '<div>' . $item->content . '</div><br><br><br>';
echo '</p>';
mysql_query("INSERT INTO rss_feeds (id, title, description, link, category, pubdate, facebook_pub, website)
VALUES (
'',
'".mysql_real_escape_string($item->title)."',
'".mysql_real_escape_string($item->description=htmlspecialchars(trim($item->description)))."',
'".mysql_real_escape_string($item->link)."',
'".mysql_real_escape_string($item->category)."',
'".mysql_real_escape_string($item->pubDate)."',
'No',
'almourassel.com')");
}
}
?>
但是,当我加载此脚本时,它会重新插入以前添加的数据。我怎样才能更新新文章。
我认为脚本应该添加新项目,直到它通过比较Pubdate来满足表格中的las添加元素。
答案 0 :(得分:2)
最简单的方法是使用MySQL replace into
命令
REPLACE INTO table_name(column_name1,column_name2,…) VALUES(value1,value2,…)
MySQL REPLACE语句是SQL标准的MySQL扩展。 MySQL REPLACE的工作方式类似于INSERT语句,具有以下规则:
基本上你所要做的就是在SQL语句中用INSERT INTO
替换REPLACE INTO
。
但是,如果您有auto-increment primary keys
,replace into
可能不是一个好主意,因为它会删除并插入记录,因此会为相同的记录创建新的PK ID,从而导致FK约束出现问题..
另一种选择是使用INSERT ... ON DUPLICATE KEY UPDATE
这将再次检查唯一键字段的重复项。如果您可以确定pubdate对于每篇文章都是唯一的,则可以使用此语法代替replace into
或者您可以选择执行select from table where db_pubdate = rss_pubdate
的传统路线,如果没有匹配的记录,则执行insert into table
答案 1 :(得分:1)
您还可以编写两个不同的查询,一个用于删除表的现有数据,然后点击您的插入查询。 或者你可以使用mysql的replace into命令。 我之前以一种非常简单的方式完成了这项工作,请参阅:
mysql_query("DELETE FROM `wp_property`") or die(mysql_error());
echo "Old data deleted !: <br /><br />";
$xmls = simplexml_load_file('my_file_location.xml');
foreach($xmls->Property as $xml)
{
$ID = $xml->ID;
$ManagementCompanyID = $xml->ManagementCompanyID;
$MarketingName = $xml->MarketingName;
}
$sql = "INSERT INTO `wp_property` SET`ID`='".mysql_real_escape_string(trim($ID))."', `ManagementCompanyID`='".mysql_real_escape_string(trim($ManagementCompanyID))."', `MarketingName`='".mysql_real_escape_string(trim($MarketingName))."'";
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
}
echo "New Records added successfully ! <br /><br />";
希望它会对你有所帮助。
快乐的编码!