我正在尝试使用php从我的SQL Server数据库中获取数据,以便填充e XML文档。但是我有这个错误:Call to a member function saveXML() on a non-object in C:\xampp\htdocs\db\1mod.php on line 67
有人可以帮我吗?我该怎么办?
这是我的php文件
<?php
$file = fopen("C:/xampp/htdocs/result.xml","w");
ini_set('display_errors',1);
error_reporting(E_ALL);
$server = "USER-PC\SQLEXPRESS";
$options = array("UID"=>"", "PWD"=>"", "Database"=>"RESTORANTET");
$conn = sqlsrv_connect($server, $options);
if(!$conn)
{
echo mysql_error();
}
$Query = "SELECT MAX(ID_Rest) AS MAXID FROM RESTORANTET";
$Result = sqlsrv_query($conn,$Query)
or die("Query to get blah failed with error111: ".mysql_error());
$Row = sqlsrv_fetch_array($Result,SQLSRV_FETCH_ASSOC);
$nbPhase = $Row['MAXID'];
print "<TrafficPhase>";
$i = 1;
$k = 1;
while ($i <= $nbPhase)
{
print "<Phase>\n";
$Query1 = "SELECT * FROM RESTORANTET WHERE ID_Rest = $i";
$Result1 = sqlsrv_query($conn,$Query1) or die("Query to get blah failed with error222: ".mysql_error());
$Row1 = sqlsrv_fetch_array( $Result1);
print "<Option_id>" .$k. "</Option_id>\n";
print "<name>" .$Row1['Emri_Rest']. "</name>\n";
print "<Option_Concept_ID>" .$Row1['Lloji_i_ushqimit']. "</Option_Concept_ID>\n";
$i = $i + 1;
print "</Phase>\n";
}
print "</TrafficPhase>\n";
echo $file->saveXML();
fwrite($file, $xml->w);
fclose($file);
?>
提前致谢!
答案 0 :(得分:0)
我在这段代码中的任何地方都没有看到$ file对象的位置。这可能是导致错误的原因。有关使用saveXML函数的文档,请参见此处:http://us3.php.net/domdocument.saveXML
答案 1 :(得分:0)
Beacuse saveXML是来自DOMDocument Object的函数
http://pl1.php.net/domdocument.saveXML
stream fopen不支持saveXML函数。如果你想使用它,你可以创建DOMDocument的第一个对象,例如:
$dom = new DOMDocument('1.0', 'iso-8859-1');
echo $dom->saveXML(); /* <?xml version="1.0" encoding="iso-8859-1"?> */
如果你想把xml元素作为字符串操作,你可以使用
$sxe = new SimpleXMLElement('http://example.org/document.xml', NULL, TRUE);
echo $sxe->asXML();