2013-05-19 65 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; 
    ... 
}