我用推文加载一个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 />";
?>
答案 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语法。