2011-02-25 2 views

ответ

30

Пример: XMLWriter.

mysql_connect('server', 'user', 'pass'); 
mysql_select_db('database'); 

$sql = "SELECT udid, country FROM table ORDER BY udid"; 
$res = mysql_query($sql); 

$xml = new XMLWriter(); 

$xml->openURI("php://output"); 
$xml->startDocument(); 
$xml->setIndent(true); 

$xml->startElement('countries'); 

while ($row = mysql_fetch_assoc($res)) { 
    $xml->startElement("country"); 

    $xml->writeAttribute('udid', $row['udid']); 
    $xml->writeRaw($row['country']); 

    $xml->endElement(); 
} 

$xml->endElement(); 

header('Content-type: text/xml'); 
$xml->flush(); 

Выход:

<?xml version="1.0"?> 
<countries> 
<country udid="1">Country 1</country> 
<country udid="2">Country 2</country> 
... 
<country udid="n">Country n</country> 
</countries> 
+0

@XcodeDev, вам нужно изменить код SQL на вашу схему базы данных. – Czechnology

8
<?php 

mysql_connect('myserver', 'username', 'password'); 
mysql_select_db('mydatabase'); 
$result = mysql_query('SELECT `udid`, `country` FROM `MyTable`'); 

while($data = mysql_fetch_assoc($result)) { 
    foreach($data as $key => $value) { 
    echo "<$key>$value</$key>"; 
    } 
} 

?> 

Этот фрагмент кода должен дать вам хороший старт. Но без желаемой структуры XML это сложно сделать лучше.

Однако я не уверен, что PHP является правильным решением для этой задачи. Например, многие инструменты, например phpmyadmin, могут выводить данные mysql в формате XML.

+0

спасибо, я получаю ошибку синтаксическую ошибку: ошибка синтаксиса, неожиданный «{хотя! –

+0

отсутствует закрытие ')' в 'while()'. также, опечатка в 'mysql_queery()' – drudge

1
<?php 

mysql_connect('myserver', 'username', 'password'); 
mysql_select_db('mydatabase'); 
$result = mysql_query('SELECT `udid`, `country` FROM `MyTable`'); 

$Result = "<?xml version='1.0' encoding='utf-8'?>\n<employees>\n"; 

while($data = mysql_fetch_assoc($Recordset1)) { 
    $Result .= " <employee>\n"; 
    foreach($data as $key => $value) { 
    $Result .= " <$key>$value</$key>\n"; 
    } 
    $Result .= " </employee>\n"; 
} 
$Result .= "</employees>\n"; 
echo $Result; 

?> 
0

борюсь много, чтобы найти это решение в Mysqli формате, но нигде я не нашел решение. Ниже приведено решение. Надеюсь, это поможет кому-то.

<?php 
//Create file name to save 
$filename = "export_xml_".date("Y-m-d_H-i",time()).".xml"; 

$mysql = new Mysqli('server', 'user', 'pass', 'database'); 
if ($mysql->connect_errno) { 
    throw new Exception(sprintf("Mysqli: (%d): %s", $mysql->connect_errno, $mysql->connect_error)); 
} 

//Extract data to export to XML 
$sqlQuery = 'SELECT * FROM t1'; 
if (!$result = $mysql->query($sqlQuery)) { 
    throw new Exception(sprintf('Mysqli: (%d): %s', $mysql->errno, $mysql->error)); 
} 

//Create new document 
$dom = new DOMDocument; 
$dom->preserveWhiteSpace = FALSE; 

//add table in document 
$table = $dom->appendChild($dom->createElement('table')); 

//add row in document 
foreach($result as $row) { 
    $data = $dom->createElement('row'); 
    $table->appendChild($data); 

    //add column in document 
    foreach($row as $name => $value) { 

     $col = $dom->createElement('column', $value); 
     $data->appendChild($col); 
     $colattribute = $dom->createAttribute('name'); 
     // Value for the created attribute 
     $colattribute->value = $name; 
     $col->appendChild($colattribute);   
    } 
} 

/* 
** insert more nodes 
*/ 

$dom->formatOutput = true; // set the formatOutput attribute of domDocument to true 
// save XML as string or file 
$test1 = $dom->saveXML(); // put string in test1 
$dom->save($filename); // save as file 
$dom->save('xml/'.$filename); 
?> 
0
<?php 

    // Create connection 
    $con=mysqli_connect("localhost","root","root","students"); 

    // Check connection 
    if (mysqli_connect_errno()) 
    { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    //get student ID from URL 
    $STU_ID = $_GET['id']; 

    $sql = "SELECT * FROM students_info WHERE ID = ".$STU_ID; 
    $res = mysqli_query($con, $sql); 

    $xml = new XMLWriter(); 

    $xml->openURI("php://output"); 
    $xml->startDocument(); 
    $xml->setIndent(true); 

    $xml->startElement('students'); 

    while ($row = mysqli_fetch_assoc($res)) { 
     $xml->startElement("student"); 

     $xml->writeElement("id", $row['ID']); 
     $xml->writeElement("name", $row['name']); 
     $xml->writeElement("gpa", $row['GPA']); 
     $xml->writeRaw($row['student']); 

     $xml->endElement(); 
    } 

    $xml->endElement(); 

    header('Content-type: text/xml'); 
    $xml->flush(); 

    // Free result set 
    mysqli_free_result($result); 
    // Close connections 
    mysqli_close($con); 
?> 
Output 
<students> 
    <student> 
     <id>111</id> 
     <name>sara</name> 
     <gpa>4.5</gpa> 
    </student> 
</students> 
+0

Я улучшил форматирование кода. Я бы посоветовал вам улучшить свой ответ дальше, объяснив свой код, включая то, что он делает, и почему и как это отвечает на вопросы. – mmgross

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