2013-05-19 62 views
-1

我不能爲我的生活弄清楚如何讓這段代碼處理多條記錄。代碼工作正常,它只是插入第一條記錄,然後停止。xml解析foreach循環+只插入一條記錄?

飼料:http://online.computicket.com/web/events/search.rss

的PHP:

<?php 

$con=mysqli_connect("localhost","vadevco_reticket","3wer5top","vadevco_reticket"); 

if(! $xml = simplexml_load_file('feed.xml')) { 
    echo 'unable to load XML file'; 
} else { 
    foreach($xml as $event) { 
$idrandom = rand(0,99); 
     $title = $event->item->title; 
     $description = $event->item->description; 
     $link = $event->item->link; 
     $guid = $event->item->guid; 
     $pubDate = $event->item->pubDate; 
     $image_t = $event->item->image_thumb; 
     $image_l = $event->item->image_large; 
     $displayDates = $event->item->displayDates; 
$sql = "INSERT INTO `vadevco_reticket`.`events` (`title`, `description`, `pubDate`, `image_t`, `image_l`, `displayDates`, `id`, `event_id`) VALUES ('$title', '$description', '$pubDate', '$image_t', '$image_l', '$displayDates','','$idrandom')"; 
mysqli_query($con,$sql); 

     foreach($event->item->showDates->showDate as $eventDate) {   
      $date = $eventDate->date; 
      $venue = $eventDate->venue; 
      $complex = $eventDate->complex; 
      $region = $eventDate->region; 
      $costs = $eventDate->costs; 
$sql2 = "INSERT INTO `vadevco_reticket`.`instances` (`id`, `event_id`, `date`, `venue`, `complex`, `city`, `region`, `costs`) VALUES ('', '$idrandom', '$date', '$venue', '$complex', '$city','$region','$costs')"; 
mysqli_query($con,$sql2); 
      } 


} 

    } 

?> 

如何使它遍歷$項目的所有實例的供給和插入他們都任何建議,將不勝感激。

在此先感謝!

+0

http://php.net/simplexml.examples-basic - 在您的情況:你在,雙犯了一個錯誤somethwere有檢查你循環的每個變量都包含你正在查找的內容然後修復它。這很容易,我們無法做任何事情。 – hakre

+0

另一個提示:將你的代碼分成子程序。讓例程做一個特定的事情。測試每個程序都做得很好,然後把程序放在一起。這通常會自動工作,否則很容易調試。比較:[PHP文件無法輸入部分代碼](http://stackoverflow.com/q/11575531/367456) – hakre

+1

請停止連接查詢並學習如何使用預準備語句。 –

回答

2

您通過項目而不是XML本身需要循環:

foreach($xml->item as $event) { 
    $idrandom = rand(0,99); 
    $title = $event->title; 
    $description = $event->description; 
    ... 
}