2010-09-16 78 views
0

Im使用tweets加載xml文件,然後將其添加到Mysql數據庫。到目前爲止它工作正常,但id喜歡對url字段進行基本檢查,看它是否已經添加到數據庫中。如果它在數據庫中已經有id,就像更新提及計數一樣,否則將它作爲新條目插入。這是一個真正的新手問題,但我努力讓它工作。下面是現在的代碼:PHP/MySQL檢查數據庫中的重複內容

<?php 

require_once('functions/functions.php'); 

$dbhost = '****'; 
$dbuser = '****'; 
$dbpass = '****'; 

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); 

if($conn) 
{ 
    echo "Database Connection Successfull...<br /><br />"; 
} 

$dbname = '****'; 
mysql_select_db($dbname) or die('Couldnt connect to database table'); 

if($dbname) 
{ 
    echo "Database ".$dbname." Selected..<br /><br />"; 
} 

    $tweetmeme = "http://api.tweetmeme.com/stories/popular.xml?category=sports-soccer&count=30" ; 

    $xml = @simplexml_load_file($tweetmeme) or die ("no file loaded") ; 
    if($xml) 
    { 
    echo "Tweetmeme XML loaded with ".count($xml->stories->story)." stories in the file..<br /><br />"; 
    } 
if(get_magic_quotes_gpc()) 
{ 
    echo "Magic Quotes is ON<br /><br />"; 
} 
$count_insert=0; 
$count_update=0; 

//Select url and id and compare to the url being added 
$url_compare = mysql_query("SELECT id,url FROM ft_tweets"); 


if($url_compare) 
{ 
    //echo_result($url_compare); 
    echo mysql_num_rows($url_compare)." rows loaded.<br /><br />"; 
} 

$url_compare = mysql_fetch_assoc($url_compare); 

foreach($xml->stories->story as $story) 
{ 
    $title=check_input($story->title); 


    $url=check_input($story->url); 

    $media_type=check_input($story->media_type); 

    $created=check_input($story->created_at); 

    $url_count=check_input($story->url_count); 

    $comment_count=check_input($story->comment_count); 

    $excerpt=check_input($story->excerpt); 



    $sql = "INSERT INTO ft_tweets (title,url,media_type,created_at,mention_count,comment_count,excerpt) VALUES ($title,$url,$media_type,$created,$url_count   ,$comment_count,$excerpt)"; 


    $result = mysql_query($sql) or die(mysql_error()); 
    if($result) 
    { 
     //echo "added to database<br />"; 
     $count_insert++; 
    } 
} 
echo $count_insert." Records added to the database<br /><br />"; 
$search=mysql_query("SELECT * FROM ft_tweets WHERE title LIKE '%liverpool%' OR excerpt LIKE '%lfc%'"); 
if($search) 
{ 
    echo "<br /><br />Found tweets mentioning Liverpool"; 
} 
//fetch 10 tweets from ft_tweets where liverpool or lfc is in the excerpt or the title and store it in a variable 
//echo_result($search); 
echo "<br />"; 
var_dump($search); 
echo "<br />"; 
?> 

回答

1

好像你只需要首先檢查重複的推文。

$sql = "SELECT id FROM ft_tweets WHERE url = '" . mysql_real_escape_string($url) . "'"; 
$duplicate = mysql_query($sql); 
if (mysql_num_rows($duplicate) > 0) { 
    // some notice about duplicate tweet 
    $count_duplicate++; 
} else { 
    // insert the new 
    $sql = "INSERT INTO..."; 
} 
+0

不適合我,它運行,但沒有拿起任何重複的網址在數據庫中。邏輯看起來很好,所以也許它的url格式之前,它進入數據庫 – 2010-09-17 00:10:53

1

如果您設置網址爲重點,你可以使用INSERT ... on DUPLACATE KEY UPDATE語法時才。

+0

這種解決方案是更優雅:)但你需要MySQL 5.0 + – 2010-09-16 23:47:32

+0

你是建議,而不是使用一個任意的主要編號的主要鍵你使用的URL或只是使該網址在數據庫中有一個獨特的屬性 – 2010-09-17 00:12:44

+0

如果您使用獨特的網址,你不需要使用其他IDS。 – jcubic 2010-09-17 08:24:36

相關問題