将simplexml解析为MYSQL

时间:2015-07-21 16:37:30

标签: php simplexml

我有一个api,我发送到数据库,结果以xml格式返回,这很好用,我可以将结果输出到屏幕上没有问题。 xml Feed是属性详细信息列表。我想要做的是使用下面的代码将结果存储在mysql数据库中。

  $feeds = array('http://web.demo.net/ademo_search.xml?  &upw=123456');
 foreach( $feeds as $feed ) {
$xml = simplexml_load_file($feed);

foreach($xml->channel->item as $item)
{

mysql_query("INSERT INTO property1 (id, department, branch, address1) 
VALUES (
    '', 
    '".mysql_real_escape_string($item->id)."', 
    '".mysql_real_escape_string($item->department)."', 
    '".mysql_real_escape_string($item->branch)."', 
    '".mysql_real_escape_string($item->address1)."')");       
     }
  }

当我运行此代码时,我不会收到错误,也不会将数据添加到数据库中。

这里是xml结构的链接,正如您将看到我的测试我只是尝试插入前几个项目。

2 个答案:

答案 0 :(得分:0)

首先:在feeds数组中,有一些空格,这可能会导致解析url并返回404错误或其他问题(不确定,但检查一下)

第二:在查询中,删除'',因为你有4列,传递了5个变量

第三:您可能希望通过在分号之前的查询之后添加or die(mysql_error())来查看MySQL错误

第四:考虑用mysqli或PDO替换mysql

答案 1 :(得分:0)

这正是您所需要的:)

我希望你喜欢它

$feed = "test.xml";
$xml = simplexml_load_file($feed);

$arr = array();
$i = 0;
foreach($xml->houses->property as $item){
    $arr[$i][] = (string) $item->id;
    $arr[$i][] = (string) $item->department;
    $arr[$i][] = (string) $item->branch;
    $arr[$i][] = (string) $item->address->address1;
    $i++;
}
var_dump($arr); // now you have them in an array .. store them in db ;)