在非对象上调用成员函数saveXML()

时间:2014-02-20 21:09:56

标签: php sql-server sql-server-2008-r2

我正在尝试使用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);


    ?>

提前致谢!

2 个答案:

答案 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();