2011-11-05 127 views
0

我讀一個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'); 
      } 


       ?> 

和表結構存儲在我的database.I'm一個RSS源是表

表結構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 ; 

現在我的要求是當鏈接相同時插入新記錄,然後只更新該字段的標題和描述,而不再插入記錄。 換句話說,如果鏈接相同,我想停止重複的數據。

+0

你可以用表結構更新你的問題嗎? – ariefbayu

+0

我不能改變表結構 – omnath

回答

1

通常情況下,我做這樣的事情:

警告:未經測試的代碼!

$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

先生,真的這個代碼工作令人驚訝我想要什麼。感謝很多.. – omnath

+0

它解決了這個代碼,併爲我的知識,我想知道如何解決它的重複密鑰更新 – omnath

+0

我的代碼基本上做一個特定的鏈接搜索。如果發現,更新。如果找不到,請插入。檢查是否發現,我使用'mysql_num_rows($ rs)> 0' – ariefbayu

0

在將每個數據源插入數據庫之前,只需檢查數據庫中是否存在標題和描述(如果不存在),將該行插入數據庫。

http://www.exceptionhandle.com

+0

我已經解釋了更新行,如果鏈接是相同的... – omnath