Простой PHP-скрипт для вывода базы данных MySQL в виде XML

Я беру уроки для начинающих в 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();

?>

1

Решение

Может это потому что $xml->openURI("php://output"); должно быть $xml->openURI("php://stdout");

Если нет, попробуйте мое другое решение:

Посмотри на XMLWriter :: вровень

Если вы открыли устройство записи в памяти, эта функция возвращает сгенерированный буфер XML, иначе, если используется 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();

?>
0

Другие решения

Других решений пока нет …