Avatar billede Simon Praktikant
30. august 2004 - 21:20 Der er 11 kommentarer og
1 løsning

returnere recordset fra mySQL som XML med php

Hej, lige et spicifikt spørgsmål.
Hvordan henter jeg et recordset i en mySQL database ud fra et sql-select-statement, og returnerer dette recordset som en XML-streng?
Avatar billede alvion Nybegynder
30. august 2004 - 21:33 #1
Tjaa... Det kommer jo an på, hvad du mener med en "XML-streng". Som du selv skriver i overskriften, så kan du gøre det med PHP:

header("Content-Type: text/xml");

echo "<?xml header.....?>\n";
echo "<results>\n";
$res = mysql_query("select bla bla...");
while ($row = mysql_fetch_assoc($res)) {
  echo "<result>\n";
  foreach ($row as $k => $v) {
    echo "<field name=\"$k\">";
    echo htmlentities($v);
    echo "</field>\n";
  }
  echo "</result>\n";
}
echo "</results>\n";
Avatar billede alvion Nybegynder
30. august 2004 - 21:34 #2
Men det kan jo være at du har nogle særlige krav til udformningen af xml-dokumentet?
Avatar billede Simon Praktikant
30. august 2004 - 22:01 #3
jeg vil hente strengen med c# og lægge recordsettet, som er repræsenteret ved XML, ind i et dataset, og så ind i et datagrid
Avatar billede Simon Praktikant
30. august 2004 - 22:07 #4
jeg glemte at sige at jeg vil tilgå siden fra en applikation med C#. Det er fordi jeg ikke har direkte adgang til databasen udefra at jeg bliver nødt til at lave det her nummer
Avatar billede alvion Nybegynder
31. august 2004 - 10:03 #5
Tja... Men ovenstående (omend det ikke er testet) skulle gerne producere gyldig XML kode. Formatet er selvopfundet, hvis du have formatet lidt anderledes, så kan du jo bare lave det om.
Avatar billede Simon Praktikant
31. august 2004 - 13:22 #6
Jeg prøver det af.
Findes i øvrigt ikke nogle funktioner som kan gøre det?
Avatar billede alvion Nybegynder
31. august 2004 - 14:44 #7
Det gør der måske nok - ved det ikke. Men hvorfor? Det svære er jo ikke at LAVE xml. Det svære kommer først, når man skal fortolke det. Dertil findes der et utal af forskellige libraries.
Avatar billede Simon Praktikant
31. august 2004 - 19:11 #8
Tak for hjælpen til at komme videre.
Jeg har rettet koden lidt til som du sendte, og nu virker det
------------
<?php
header("Content-Type: text/xml");

echo "<?xml version='1.0' standalone='yes'?>\n";
echo "<root>\n";

$connection = mysql_connect("localhost","brugernavn","password");
$db        = mysql_select_db("databasenavn",$connection);

$query      = "select * from tabelnavn";
$res        = mysql_query($query);

while ($row = mysql_fetch_assoc($res)) {
  echo "<result>\n";
  foreach ($row as $k => $v) {
   
    echo "<$k>";       
    echo htmlentities($v);
    echo "</$k>\n";   
  }
  echo "</result>\n";
}

echo "</root>\n";
?>
Avatar billede Simon Praktikant
31. august 2004 - 19:12 #9
Hvis du smider et svar får du dine point.... Gg endnu en gang mange tak!!
Avatar billede alvion Nybegynder
31. august 2004 - 21:25 #10
Velbekomme - smid også gerne noget karma af. :-)
Avatar billede Simon Praktikant
31. august 2004 - 23:18 #11
er der karma herinde? og hvad er det? :-)
Avatar billede alvion Nybegynder
31. august 2004 - 23:23 #12
Never mind - det er ikke så vigtigt... :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester