2011-11-03 69 views
0

我是新來的php.I'm閱讀RSS源並存儲在我的數據庫表中。 這個我使用更改爲foreach循環

$num = count($movies->channel->item); 
for ($i=0; $i<=$num-1; $i++){ 
    $tittle= $movies->channel->item[$i]->title."<br/>"; 
    $link=$movies->channel->item[$i]->link."<br/>"; 
    $image=$movies->channel->item[$i]->medium_image_url."<br/>"; 
    $des=$movies->channel->item[$i]->description."<br/>"; 
    $city=$movies->channel->item[$i]->city; 
} 

怎麼能顯示與foreach循環的所有數據?

回答

1
foreach($movies->channel->item as $opt){ 
    echo $tittle= $opt->title."<br/>"; 
    echo $link=$opt->link."<br/>"; 
    echo $image=$opt->medium_image_url."<br/>"; 
    echo $des=$opt->description."<br/>"; 
    echo $city=$opt->city; 
} 
+0

'$ city'行需要編輯(remove' - > item [$ i]'),並且潛在的'$ num'變量不再需要。 – Benjie

+0

嗯..你是對的.. –

+0

感謝您的幫助 – omnath

1

你可以echo出你的語句的結果(我也把它改成一個foreach的要求):

foreach ($movies->channel->item as $item) { 
    $tittle= $item->title."<br/>"; 
    $link=$item->link."<br/>"; 
    $image=$item->medium_image_url."<br/>"; 
    $des=$item->description."<br/>"; 
    $city=$item->city; 

    echo $tittle.$link.$image.$des.$city; 
} 
1
foreach ($movies->channel->item as $item) { 
    echo $item->title.'<br />'; 
    echo $item->link.'<br />'; 
    echo $item->medium_image_url.'<br />'; 
    echo $item->description.'<br />'; 
    echo $item->city; 
} 

我也附和他們,因爲我覺得這是你想做什麼 - 你的代碼會在每次迭代中重新分配變量,但是不會對它們做任何事情。它們每次都被覆蓋,所以它們只會保留最後一次迭代的值。

編輯

您可以輕鬆地修改此做這樣的事情,將行插入到你的數據庫:

foreach ($movies->channel->item as $item) { 
    echo $item->title.'<br />'; 
    echo $item->link.'<br />'; 
    echo $item->medium_image_url.'<br />'; 
    echo $item->description.'<br />'; 
    echo $item->city.'<br />'; 

    // Build the query - change the names of your table and columns as appropriate 
    $query = "INSERT INTO `tablename` 
       (`title`,`link`,`medium_image_url`,`description`,`city`) 
      VALUES 
       ('$item->title','$item->link','$item->medium_image_url','$item->description','$item->city')"; 
    // Do the query - do NOT show the output of mysql_error() in a production environment! 
    if (!mysql_query($query)) echo 'Oh no! Something went wrong with the query: '.mysql_error(); 
} 

或者,你可以把它全部納入一個查詢,以減少數據庫流量:

$rows = array(); 
foreach ($movies->channel->item as $item) { 
    echo $item->title.'<br />'; 
    echo $item->link.'<br />'; 
    echo $item->medium_image_url.'<br />'; 
    echo $item->description.'<br />'; 
    echo $item->city.'<br />'; 
    // Add this entry to $rows 
    $rows[] = "('$item->title','$item->link','$item->medium_image_url','$item->description','$item->city')"; 
} 

// Build the query - change the names of your table and columns as appropriate 
$query = "INSERT INTO `tablename` 
      (`title`,`link`,`medium_image_url`,`description`,`city`) 
      VALUES ".implode(', ',$rows); 
// Do the query - do NOT show the output of mysql_error() in a production environment! 
if (!mysql_query($query)) echo 'Oh no! Something went wrong with the query: '.mysql_error(); 
+0

先生,其工作。但現在我想將所有數據存儲在我的數據庫表中。 – omnath

+0

你使用什麼數據庫/驅動程序? – DaveRandom

+0

我正在使用mysql – omnath

1

這應該工作:

foreach ($movies as $movie) 
    $tittle = $movie->title."<br/>"; 
    $link = $movies->link."<br/>"; 
    $image = $movie->medium_image_url."<br/>"; 
    $des = $movie->description."<br/>"; 
    $city = $movie->city; 
}