简单的PHP脚本,用于输出mySQL数据库作为XML

时间:2014-09-14 11:28:46

标签: php mysql

我正在使用PHP的初学者课程,我正在尝试将mySQL数据库作为XML输出到网页。 数据库名称为fruits,它有三列:idfruitnamefruitcolor

这就是我在代码中所拥有的内容,但它并没有输出任何内容。我哪里错了?

<?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();

?>

1 个答案:

答案 0 :(得分:0)

也许是因为$xml->openURI("php://output");需要$xml->openURI("php://stdout");

如果没有尝试我的其他解决方案:

查看XMLWriter::flush

  

如果你在内存中打开了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();

?>