sql >> Database teknologi >  >> RDS >> Mysql

Tildeling af xml genereret af en while-løkke til en variabel

Sådan gør du det med DOM :

function createUserDetailsXml(array $result) {

    $dom  = new DOMDocument;
    $dom->formatOutput = TRUE; // enable automatic indenting
    $dom->loadXML('<users/>'); // set root node

    foreach($result as $row) {

        // create user-details node
        $user = $dom->createElement('user-details');

        // create and append details to user-details node
        $user->appendChild(
            $dom->createElement('user-id', $row['uid']));
        $user->appendChild(
            $dom->createElement('user-name', $row['userName']));
        $user->appendChild(
            $dom->createElement('user-points', $row['points']));
        $user->appendChild(
            $dom->createElement('image-url', $row['imageURL']));
        $user->appendChild(
            $dom->createElement('thumb-url', $row['thumbURL']));

        // add user-details node to XML document, e.g. users node
        $dom->documentElement->appendChild($user);
    };
    return $dom->saveXML(); // returns the formatted XML
};

Bemærk, at funktionen forventer, at du består i det fulde resultatarray, så jeg kunne teste det med:

$result = array(
    array(
        'uid'      => 1,
        'userName' => 'Gordon',
        'points'   => PHP_INT_MAX,
        'imageURL' => 'http://example.com/gordon.jpg',
        'thumbURL' => 'http://example.com/t_gordon.jpg'
    ),
    array(
        'uid'      => 2,
        'userName' => 'John <blink>"Frigging"</blink> Doe',
        'points'   => 0,
        'imageURL' => 'http://example.com/johndoe.jpg',
        'thumbURL' => 'http://example.com/t_johndoe.jpg'
    )
);
echo createUserDetailsXml($result);

Funktionen vender derefter tilbage

<?xml version="1.0"?>
<users>
  <user-details>
    <user-id>1</user-id>
    <user-name>Gordon</user-name>
    <user-points>2147483647</user-points>
    <image-url>http://example.com/gordon.jpg</image-url>
    <thumb-url>http://example.com/t_gordon.jpg</thumb-url>
  </user-details>
  <user-details>
    <user-id>2</user-id>
    <user-name>John &lt;blink&gt;"Frigging"&lt;/blink&gt; Doe</user-name>
    <user-points>0</user-points>
    <image-url>http://example.com/johndoe.jpg</image-url>
    <thumb-url>http://example.com/t_johndoe.jpg</thumb-url>
  </user-details>
</users>

Bemærk venligst, at DOM automatisk undslippede de særlige tegn i John Does navn for dig. DOM vil også sørge for, at XML-elementnavnene (eller attributter, hvis du bruger dem) er syntaktisk gyldige. Det tilføjede også XML Prolog.




  1. Fjerner MySQL 5.7 fuldstændigt

  2. Kan tabellen ikke afkortes, fordi den refereres af en FOREIGN KEY-begrænsning?

  3. JSON_VALUE() Eksempler i SQL Server (T-SQL)

  4. PHP detekterer SQL-injektionsforsøg