2014-09-14 2 views
1

Я беру класс начинающих в PHP, и я пытаюсь вывести базу данных mySQL как XML на веб-страницу. База данных: fruits и имеет три столбца: id, fruitname и fruitcolor.Простой PHP-скрипт для вывода базы данных mySQL как XML

Это то, что у меня есть в моем коде, но это ничего не выводит. Где я иду не так?

<?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

Проверить этот учебник XMLWriter вне, то вы увидите сами: Http: //board.phpbuilder. com/showthread.php? 10356853-A-quick-PHP-XMLWriter-Class-Tutorial-% 28XML-amp-RSS% 29 – Xatenev

+0

Какая ошибка PHP вы получаете? – Yada

+0

должен быть более простой способ сделать это, чем то, что я здесь делаю. – jmccommas

ответ

0

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

Если не попытать другое решение:

взглянуть на XMLWriter::flush

Если вы открыли писатель в памяти, это функция возвращает сгенерированный буфер XML, Else, если используется URI, эта функция будет записывать буфер и возвращать количество записанных байтов

Try обмена $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

это то, что он выводит данные в настоящее время:

Подключение к базе данных успешно

jmccommas

+0

кажется, что PHP не собирается в While-Loop . Возможны две причины. В таблицах нет записей, или в вашем SQL есть ошибка. – DerKnorr

+0

Его не база данных, поскольку есть записи, поэтому это должен быть SQL. Есть ли более простой способ сделать это, используя xml_decode(): – jmccommas

Смежные вопросы