2010-09-06 56 views
0

我把一个简单的脚本放在一起,从tweetmeme api中提取内容,然后将其插入数据库以便进一步格式化。这是我目前拥有的,但它插入没有记录,并且没有为数据库连接返回任何错误,所以我可以假定它连接并在插入时失败。数据库连接但不插入记录?

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

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

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



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

    $xml = @simplexml_load_file($tweetmeme) or die ("no file loaded") ; 

echo count($xml->stories->story)."stories in the XML file<br /><br />"; 
echo $xml->getName() . "<br /><br />"; 
foreach($xml->stories->story as $story) 
{ 
    $title=$story->title; 
    $url=$story->url; 
    $media_type=$story->media_type; 
    $created=$story->created_at; 
    //$current_time=$date(); 
    $url_count=$story->url_count; 
    $comment_count=$story->comment_count; 
    $excerpt=$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); 

做vardump()上的各个项目返回“对象(的SimpleXMLElement)”,这是XML结构是什么样子的一个例子link text

+0

放一个print语句的foreach循环中,看看它是否是第一个到达那里,我会建议你也打印出插入查询,看看是否作品。 – 2010-09-06 23:53:59

+0

使用echo $ sql;在声明$ sql之后返回如下:INSERT INTO ft_tweets(title,url,media_type,created_at,remark_count,comment_count,excerpt)VALUES(MARTIN SAMUEL:没有人喜欢Ashley Cole,但你必须承认:他很好| Mail Online, http://www.dailymail.co.uk/sport/football/article-1309568/MARTIN-SAMUEL-No-likes-Ashley-Cole-admit-Hes-good.html,news,2010-09-06 23:14 :35,12,0,Mail Online:MARTIN SAMUEL:没有人喜欢阿什利科尔,但你必须承认:他很好:尽管标题很长...... http://bit.ly/baG67n)看起来正确。 – 2010-09-07 00:03:46

+2

您正在将原始字符串惰性化到查询中。你需要用'引号'将它们包围起来,并通过'mysql_real_escape_string()'运行文本来生成一个有效的查询。如果你使用'mysql_query()'调用('$ result = mysql_query($ sql)或者die(mysql_error())'来检查错误,''你会看到这个。 – 2010-09-07 02:03:19

回答

0

确保您的查询会成功,尝试添加or mysql_error()这样,看看是否有任何错误来了:

$result = mysql_query($sql) or die(mysql_error()); 
+0

mysql_error报告“ 你有一个错误在您的SQL语法;检查手册,对应于您的MySQL服务器版本的正确语法使用附近“ – 2010-09-07 00:00:06

+0

抱歉输入发送帖子..错误信息完成关闭第一项插入,因此它失败immedietely – 2010-09-07 00:00:58

+0

继承人如果有帮助:'ft_tweets'( 'id' int(11)NOT NULL auto_increment, 'title'文本字符集utf8整理utf8_unicode_ci NOT NULL, 'url'文本字符集utf8整理utf8_unicode_ci NOT NULL , 'media_type' set('news','video','image')character set utf8 collat​​e utf8_unicode_ci NOT NULL, 'created_at'日期NOT NULL, 'added_at'日期NOT NULL, 'mention_count' SMALLINT(6)NOT NULL, 'comment_count' SMALLINT(6)NOT NULL, 'excerpt'文本字符集UTF8整理utf8_unicode_ci NOT NULL, PRIMARY KEY('id') ) – 2010-09-07 00:10:58