обновить RSS-канал в базе данных - PullRequest
0 голосов
/ 05 ноября 2011

Я читаю и сохраняю RSS-канал в своей базе данных. Я использую этот код

    <?php
      include_once 'db.php';
       $homepage = file_get_contents('http://rss.cnn.com/rss/edition_us.rss');

         $movies = new SimpleXMLElement($homepage);
          foreach($movies->channel->item as $opt){
            $title= $opt->title;
        $tittle=mysql_real_escape_string($title);
           $link=$opt->link;
           $links=mysql_real_escape_string($link);
           $des=$opt->description;
            $dess=mysql_real_escape_string($des);

           $sql="INSERT INTO store_feed (title, link, description)
             VALUES ('$tittle','$links','$dess')";

            $result=mysql_query($sql) or die('Error, insert query failed');
             }


              ?>

и структура таблицы

Структура таблицы для таблицы store_feed

 CREATE TABLE IF NOT EXISTS `store_feed` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(200) NOT NULL,
    `link` varchar(200) NOT NULL,
      `description` varchar(500) NOT NULL,
     `feedburner` varchar(200) NOT NULL,
     PRIMARY KEY (`id`)
       ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

теперь мое требование - когда вставлять новую запись, если ссылка такая же, тогда обновлять только заголовок и описание этого поля без вставки записи снова.другими словами, я хочу остановить повторяющиеся данные, если ссылка такая же.

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

Обычно я делаю что-то вроде этого:

ВНИМАНИЕ: НЕПРОВЕРЕННЫЙ КОД!

$sql = "SELECT id FROM store_feed WHERE link = '$links' LIMIT 1";
$rs = mysql_query($sql) or die( mysql_error() );
if( mysql_num_rows($rs) > 0)//we got link
{
    $r = mysql_fetch_array($rs);
    $id = $r['id'];
    $sql = "UPDATE store_feed SET title = '$title', description = '$dess' WHERE id = '$id'";
    mysql_query($sql) or die( mysql_error() );
} else {
    $sql = "INSERT INTO store_feed (title, link, description) VALUES ('$tittle','$links','$dess')";
    mysql_query($sql) or die( mysql_error() );
}
0 голосов
/ 05 ноября 2011

Прежде чем вставлять каждый фид в базу данных, просто убедитесь, что заголовок и описание существуют в базе данных, если не существует, вставьте эту строку в базу данных.

http://www.exceptionhandle.com

...