Я беру уроки для начинающих в 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();
?>
Может это потому что $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();
?>
Других решений пока нет …