1. ホーム
  2. php

[解決済み] このページには次のエラーが含まれています: 1行目の1列目のエラー: ドキュメントが空です。

2022-02-14 08:51:02

質問

私は解決策を見つけることができません、助けてください。ありがとうございました。

   <?php
require_once('connect.php');



$sql = "select * from projet";
$result = $conn->query($sql);
$xml = new SimpleXMLElement('<xml/>');
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
  $mydata = $xml->addChild('mydata');
    $mydata->addChild('Id',$row['idProjet']);
     }
} else {
echo "0 results";
}
$conn->close();
header ("Content-Type:text/xml");
 echo($xml->asXML());
?>

およびconnect.phpファイル

   $servername = "localhost";
$username = "root";
$password = "";
$dbname = "mtocrowdrise";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 
echo "connected succesfully";    

一方、このエラーが出続けています。

  This page contains the following errors:

error on line 1 at column 1: Document is empty
Below is a rendering of the page up to the first error. 

解決方法は?

ページがXMLドキュメントとしてキャストされている場合、ページにHTMLを書いたり出力したりするべきではありません ( header ("Content-Type:text/xml"); ).

削除 echo "connected succesfully"; から connect.php .

また、(最終的には)次のような場合も同じエラーになります。

...
} else {
    echo "0 results";
}
...
header ("Content-Type:text/xml");

が満たされています。ですから、ドキュメントをXMLにキャストするのは、エラーがなく、実際に表示するXMLが存在する場合のみにしてください。

以下のようなコードは、表示する結果がある場合にのみ、ドキュメントをXMLに設定します(あなたのオリジナルのコードによる)。

require_once('connect.php');

$sql = "select * from projet";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    $xml = new SimpleXMLElement('<xml/>');
    // output data of each row
    while($row = $result->fetch_assoc()) {
        $mydata = $xml->addChild('mydata');
        $mydata->addChild('Id',$row['idProjet']);
    }
    header ("Content-Type:text/xml");
    echo($xml->asXML());
} else {
    echo "0 results";
}
$conn->close();