更新数据库而不创建重复项

时间:2012-03-29 18:56:03

标签: php javascript mysql

我正在尝试从Yahoo SQL API检索RSS提要并通过PHP将其存储在文件中。这是代码:

if( filemtime($cache) < (time() - 10800) ) {

   if ( !file_exists(dirname(__FILE__) . '/cache') ) {
      mkdir(dirname(__FILE__) . '/cache', 0777);
   }

   $path = "http://query.yahooapis.com/v1/public/yql?q=";
   $path .= urlencode("SELECT * FROM feed WHERE url='http://url'");
   $path .= "&format=json";

   $feed = file_get_contents($path, true);

   if ( is_object($feed) && $feed->query->count ) {
      $cachefile = fopen($cache, 'wb');
      fwrite($cachefile, $feed);
      fclose($cachefile);
   }
}
else {
   $feed = file_get_contents($cache);
}

问题是。现在我想将结果存储在数据库中。但是因为,我将它存储在文件中并在3小时内更新,我确信我会运行以复制RSS条目。而且我不想将这些重复项存储在数据库中。

是否有一些有效的方法来完成这项工作?

2 个答案:

答案 0 :(得分:3)

或者你在url上添加一个唯一索引,这样如果url已经存在,就不会添加插入。

你可以通过使用INSERT INGORE INTO ...

来解决mysql给你的错误

答案 1 :(得分:1)

检查RSS条目是否存在,如果存在 - 不插入,否则插入新的rss条目。