我正在使用PHP的初学者课程,我正在尝试将mySQL数据库作为XML输出到网页。
数据库名称为fruits
,它有三列:id
,fruitname
和fruitcolor
。
这就是我在代码中所拥有的内容,但它并没有输出任何内容。我哪里错了?
<?php
require_once "inc/db_connect.php";
if($db){
echo "<p>Connected to Database Successfully</p>";
} elseif(isset($error)){
echo "<p>$error</p>";
}
?>
<?php
$sql = "SELECT id, fruitname , fruitcolor from fruits";
$res = mysql_query($sql);
$xml = new XMLWriter();
$xml->openURI("php://output");
$xml->startDocument();
$xml->setIndent(true);
$xml->startElement('fruits');
while ($row = mysql_fetch_assoc($res)) {
$xml->startElement("id");
$xml->writeAttribute('id', $row['id']);
$xml->writeRaw($row['fruitname']);
$xml->writeRaw($row['fruitcolor']);
$xml->endElement();
}
$xml->endElement();
header('Content-type: text/xml');
$xml->flush();
?>
答案 0 :(得分:0)
也许是因为$xml->openURI("php://output");
需要$xml->openURI("php://stdout");
如果没有尝试我的其他解决方案:
如果你在内存中打开了writer,这个函数返回生成的XML缓冲区,Else,如果使用URI,这个函数会写缓冲区并返回写入的字节数
尝试与$xml->openURI("php://output");
和$xml->openMemory();
$xml->flush();
交换echo $xml->flush();
结果代码:
<?php
require_once "inc/db_connect.php";
if($db){
echo "<p>Connected to Database Successfully</p>";
} elseif(isset($error)){
echo "<p>$error</p>";
}
?>
<?php
$sql = "SELECT id, fruitname , fruitcolor from fruits";
$res = mysql_query($sql);
$xml = new XMLWriter();
$xml->openMemory();
$xml->startDocument();
$xml->setIndent(true);
$xml->startElement('fruits');
while ($row = mysql_fetch_assoc($res)) {
$xml->startElement("id");
$xml->writeAttribute('id', $row['id']);
$xml->writeRaw($row['fruitname']);
$xml->writeRaw($row['fruitcolor']);
$xml->endElement();
}
$xml->endElement();
header('Content-type: text/xml');
echo $xml->flush();
?>