【发布时间】: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->title;,因为<item>只是容器。此外,没有要循环的列表/数组。此外,mysql_函数在几个世纪前已被弃用,请使用较新的mysqli_- 函数或PDO(它们是否在 SO 上有文本块,这样您就不必每次都输入这个 ;-)) ?
标签: php xml xml-parsing