Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get MySQL database output via PHP to XML

Tags:

php

mysql

xml

I have a MySQL database on my website, and I would like to know how I could get an XML output via PHP of the following columns in the table:

  1. udid
  2. country
like image 911
max_ Avatar asked Feb 25 '11 00:02

max_


People also ask

How can you retrieve data from the MySQL database using PHP?

Data can be fetched from MySQL tables by executing SQL SELECT statement through PHP function mysql_query. You have several options to fetch data from MySQL. The most frequently used option is to use function mysql_fetch_array(). This function returns row as an associative array, a numeric array, or both.

How can you export the table as an XML file in MySQL?

To get started exporting an XML document from a MySQL database, open the database in phpMyAdmin, and select the table you want to export. Then click the Export tab. Within the Export options, click XML to indicate that XML is the output data format.

How can I get SQL query results in PHP?

Show activity on this post. require_once('db. php'); $sql="SELECT * FROM modul1open WHERE idM1O>=(SELECT FLOOR( MAX( idM1O ) * RAND( ) ) FROM modul1open) ORDER BY idM1O LIMIT 1" $result = mysql_query($sql); echo [$result]; and here is what i get.


5 Answers

<?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>";
  }
}

?>

This code snippet should give you a good start. But without the wanted XML structure, it's hard to do better.

However I'm not sure PHP is the right solution for this task. Many tools, like phpmyadmin for example, can output mysql data in XML format.

like image 70
krtek Avatar answered Sep 30 '22 16:09

krtek


An example with 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();

Output:

<?xml version="1.0"?>
<countries>
 <country udid="1">Country 1</country>
 <country udid="2">Country 2</country>
 ...
 <country udid="n">Country n</country>
</countries>
like image 23
Czechnology Avatar answered Sep 30 '22 16:09

Czechnology


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

?>
like image 27
Nuri Akman Avatar answered Sep 30 '22 18:09

Nuri Akman


<?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>
like image 45
Nutan Mishra Avatar answered Sep 30 '22 17:09

Nutan Mishra


I struggle a lot to find out this solution in mysqli format but nowhere i found the solution. Below is the solution i figured. Hope it will help some one.

<?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);   
?>
like image 26
golucoder Avatar answered Sep 30 '22 16:09

golucoder