PHP / MySQL检查数据库中的重复内容

时间:2010-09-16 23:25:08

标签: php mysql database

我用推文加载一个xml文件,然后将它添加到一个Mysql数据库中。到目前为止,它工作正常,但我喜欢对url字段进行基本检查,看看它是否已经添加到数据库中。如果它在数据库中已经id喜欢更新提及计数,则将其作为新条目插入。这是一个真正的新手问题,但我努力让它运作。这是现在的代码:

<?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 />";
?>

2 个答案:

答案 0 :(得分: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...";
}

答案 1 :(得分:1)

如果您将网址设置为密钥,则可以使用INSERT ... on DUPLACATE KEY UPDATE语法。