Проверка PHP / MySQL на наличие дублированного содержимого в базе данных - PullRequest
0 голосов
/ 17 сентября 2010

Я загружаю XML-файл с твитами, а затем добавляю его в базу данных Mysql. До этого момента он работал нормально, но id хотел бы выполнить базовую проверку поля url, чтобы увидеть, добавлено ли оно уже в базу данных. Если в базе данных уже есть идентификатор, например, для обновления счетчика упоминаний, вставьте его как новую запись. Это настоящий вопрос новичка, но я изо всех сил пытаюсь заставить его работать. Вот код, который стоит сейчас:

<?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 ]

1 голос
/ 17 сентября 2010

Если вы установите URL в качестве ключа, вы можете использовать INSERT ... при ОБНОВЛЕНИИ КЛЮЧЕВОГО КЛЮЧА синтаксис.

1 голос
/ 17 сентября 2010

Похоже, вам просто нужно сначала проверить дубликат твита.

$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...";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...