2011-11-03 89 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; 
}