【问题标题】:php and xml does not work simplexml_load_stringphp 和 xml 不起作用 simplexml_load_string
【发布时间】:2016-03-08 09:06:17
【问题描述】:

您好,我一直在尝试通过 php 加载 xml,但是从我的 vps 错误日志中我总是遇到错误。

PHP 警告:为 foreach() 提供的参数无效 非对象的属性

到目前为止,这是我创建的

xml.php
<?php

$url = "test.xml";
$ch = curl_init();
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);

$data = curl_exec ($ch);
curl_close($ch);

$xml = simplexml_load_string($data);

$con = mysql_connect("localhost","root","mypassw0rd");
mysql_select_db("test_xml",$con) or die(mysql_error());

foreach($xml -> item as $row){
    $title = $row -> title;
    $destination = $row -> destination;
    $price = $row -> price;


mysql_query("INSERT INTO `tblxml` VALUES('NULL','$title','$destination','$price')") or die(mysql_error());

}

?>

test.xml

<item>
    <title>
    title 1
    </title>

    <destination>
    destination 1
    </destination>

    <price>
    price 1
    </price>
</item>

表结构

CREATE TABLE IF NOT EXISTS `tblxml` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` text NOT NULL,     
  `destination` text NOT NULL,
  `price` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

xml 和 php 都在同一个文件夹中。

任何帮助将不胜感激。

【问题讨论】:

  • 如果这真的是您的 xml 文件而不仅仅是一个提取,您需要使用 $title = $xml-&gt;title;,因为 &lt;item&gt; 只是容器。此外,没有要循环的列表/数组。此外,mysql_ 函数在几个世纪前已被弃用,请使用较新的 mysqli_ - 函数或 PDO(它们是否在 SO 上有文本块,这样您就不必每次都输入这个 ;-)) ?

标签: php xml xml-parsing


【解决方案1】:

再次阅读您的问题,确实存在一些严重的缺陷。

  1. 请阅读有关 XML/SimpleXML/DomDocument 的优秀教程
  2. 如前所述,使用较新的 mysqli_ 函数、PDO 和绑定
  3. 使用curl 在本地获取 XML 文件的目的是什么?
  4. 您的查询不起作用,您没有指定字段并且您不需要插入NULL 值(尽管它会起作用)。这是MySQLINSERT 查询的框架:
INSERT INTO `table` (`field1`, ..., `fieldx`) VALUES('$value1', ... '$valuex');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 2019-12-05
    • 2013-04-24
    相关资源
    最近更新 更多