Obtenez de base de données MySQL de sortie via PHP, XML
J'ai une base MySQL sur mon site, et je voudrais savoir comment je pourrais obtenir une sortie au format XML via PHP les colonnes suivantes dans le tableau:
<?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>";}}?>
Ce bout de code devrait vous donner un bon départ. Mais sans la structure XML, il est difficile de faire mieux.
Cependant, je ne suis pas sûr que PHP est la solution idéale pour cette tâche. De nombreux outils, comme par exemple phpmyadmin, peut-sortie de données mysql au format XML.
merci, j'obtiens l'erreur Parse error: syntax error, unexpected '{ si! manque la fermeture ) dans le while(). aussi, faute de frappe dans mysql_queery()
Je lutte beaucoup de choses à découvrir cette solution en mysqli format, mais nulle part j'ai trouvé la solution. Ci-dessous est la solution que j'ai compris. J'espère que ça aidera certains.
<?php
//Create file name to save
$filename ="export_xml_".date("Y-m-d_H-i",time()).".xml";
$mysql =newMysqli('server','user','pass','database');if($mysql->connect_errno){thrownewException(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)){thrownewException(sprintf('Mysqli: (%d): %s', $mysql->errno, $mysql->error));}//Create new document
$dom =newDOMDocument;
$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);?>
<?php
//Create connection
$con=mysqli_connect("localhost","root","root","students");//Check connectionif(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 =newXMLWriter();
$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>
Je l'amélioration de votre mise en forme du code. Je vous suggère d'améliorer votre réponse en donnant une explication de votre code, y compris ce qu'il fait et pourquoi et comment cela répond aux questions.
Un exemple avec XMLWriter.
De sortie:
OriginalL'auteur Czechnology
Ce bout de code devrait vous donner un bon départ. Mais sans la structure XML, il est difficile de faire mieux.
Cependant, je ne suis pas sûr que PHP est la solution idéale pour cette tâche. De nombreux outils, comme par exemple phpmyadmin, peut-sortie de données mysql au format XML.
manque la fermeture
)
dans lewhile()
. aussi, faute de frappe dansmysql_queery()
OriginalL'auteur krtek
OriginalL'auteur Nuri Akman
Je lutte beaucoup de choses à découvrir cette solution en mysqli format, mais nulle part j'ai trouvé la solution. Ci-dessous est la solution que j'ai compris. J'espère que ça aidera certains.
OriginalL'auteur golucoder
OriginalL'auteur Nutan Mishra