2010-09-06 59 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