【问题标题】:xml parsing foreach loop + only one record inserted? [closed]xml解析foreach循环+只插入一条记录? [关闭]
【发布时间】:2013-05-19 14:18:17
【问题描述】:

我这辈子都不知道如何让这段代码处理多条记录。代码工作正常,它只是插入第一条记录,然后停止。

提要: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);
          }


 } 

    } 

?> 

任何关于如何使其循环通过提要中的所有 $item 实例并将它们全部插入的建议将不胜感激。

提前致谢!

【问题讨论】:

  • php.net/simplexml.examples-basic - 在您的情况下:您在某处犯了错误,请仔细检查您循环遍历的每个变量是否包含您要查找的内容,然后修复它。就这么简单,我们无能为力。
  • 另一个提示:将代码分成子程序。让例行程序做特定的事情。测试每个例程是否运行良好,然后将这些例程放在一起。这通常会自动工作,否则很容易调试。比较:PHP file cannot enter some part of code
  • 请停止连接查询并学习如何使用准备好的语句。
  • @tereško 谢谢,你能扩展一下,让我知道要研究什么吗?
  • @Chris'Horris'Edington ,查看准备好的陈述。 Thisthis 应该会给你一些指导。

标签: php mysql xml simplexml


【解决方案1】:

您需要遍历项目而不是 xml 本身:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 2012-09-19
    相关资源
    最近更新 更多