Извлечение данных из SQL для отображения в виде XML

#php #sql #xml

#php #sql #xml

Вопрос:

Мой SQL-запрос таков

   SELECT firstname AS 'User', count( * ) AS 'Number of photos uploaded'
    FROM members
    JOIN member_photo
   USING ( member_id )
GROUP BY firstname
  

В основном он отображает данные следующим образом:

 User         Number of photos uploaded  
Az                   1  
Mz                   3
  

и так далее..

Что я хочу сделать, так это перенести эти данные в XML-файл в виде :

 <photos>
    <user>Az</user>
    <user_photos>1</user_photos>
    <user>Mz</user>
    <user_photos>3</user_photos>
</photos>
  

или любым другим подходящим способом.

Комментарии:

1. Итак? Что вы пробовали и почему это не сработало?

2. Мои знания XML действительно невелики. Я еще ничего не пробовал. Что вы предлагаете?

3. То же, что и Пабло Санта Круз: сделайте то же самое, что вы бы сделали, если бы это был html.

Ответ №1:

Вы делаете точно так же, как если бы ваш XML был HTML.

Предположим, что это ваш php скрипт:

 <?php
header('Content-Type: text/xml')'
?>
<photos>
<?php
$query = "select ... form foo...";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
?>
    <user><?= $row['user'] ?></user>
    <user_photos><?= $row['photos_count'] ?></user_photos>
<?php
}
?>
</photos>
  

Комментарии:

1. и как мне вывести это в мой XML-файл? Я создал имя файла XML statistics.xml

2. в XML-файл!? Я думал, вы хотите вывести это в свой браузер. если вы хотите вывести в XML-файл, вам нужно будет открыть файл и записать в него.

3. да, точно. Вы знаете, как это сделать? Спасибо за помощь 🙂

Ответ №2:

Вы не указали свою СУБД, но следующее будет работать с PostgreSQL и Oracle:

 SELECT '<photos>'||xmlforest(firstname AS "user", count( * ) AS user_photos)||'</photos>'
FROM members
  JOIN member_photo USING ( member_id )
GROUP BY firstname