簡體   English   中英

對子標簽使用嵌套的while循環(PHP腳本生成動態XML文件)

[英]Using nested while loops for subtags (PHP script generating a dynamic XML file)

我剛剛開始學習PHP和XML,請多多包涵! 我需要使用PHP腳本從MYSQL數據庫生成動態XML文件。

我希望我的輸出看起來像這樣:

<Post>
  <Title>
  <Tags>
    <Tag>
    <Tag>
    <Tag>
  <Date>
  etc.
</Post>

<Post>
</Post>

現在,我已經成功進行了查詢,並在While-Loop中使用了它。 但是我實際上還有第二個查詢需要實現。 第一個查詢處理所有標簽,例如TitleDate和同一級別上的所有其他標簽。 但是對於Tag ,我需要同樣需要第二個查詢的子標簽

現在,如何創建將數據插入標簽的嵌套while循環? 問題是每個帖子都有幾個標簽(或只有一個),我不知道php腳本如何“進入” 標簽 ,插入第二個查詢定義的標簽元素,然后返回上一級並繼續執行第一個查詢(此處為Date )。

也許我不需要第二次while循環,不知道!

嵌套while循環沒有任何問題,除了更大的數據集可能帶來的性能問題之外(因為您,如果我正確理解,請為每個<post>查詢<tags> <post> )。

只是像這樣嵌套循環(如果您對每個標簽進行查詢):

<?php
$result = $mysqli -> query("SELECT * FROM posts");

$xmlBody = '<?xml version="1.0" encoding="ISO-8859-1"?>';
$xmlBody .= "<XML>";

while($post = $result -> fetch_array()) {

   $xmlBody .= "<post>";

   $xmlBody .= "<title>" . $post['title'] . "</title>";

   // ....

   $xmlBody .= "<tags>";

   $tags_result = $mysqli -> query("
       SELECT * 
       FROM tags 
       WHERE id='" . $post['id'] . "'
   ");

   while($tag = $tags_result -> fetch_array()) {
     $xmlBody .= "<tag>" . $tag['tag'] . "</tag>";
   }

   $xmlBody .= "</tags>";

   // More Info (for example date)....

   $xmlBody .= "</post>";

}

本書完全是盲目的,但我希望它能說明您想要達到的目標。 而不是這樣做,您可能應該考慮使用針對XML的預編寫API,例如SimpleXML 另外,可能可以使用JOIN在單個MySQL查詢中執行此操作。

@hakre那就是我的想法,我只是舉一個他所描述的例子。 我會說,如果可以的話(沒有足夠的聲譽),一個例子會有所幫助。

更新:

我更新了上面的代碼示例。 對不起,我在使用以下語法時犯了錯誤: $post -> title 僅在$post是一個對象(不是)的情況下才適用。

為了澄清起見,我在MySQL查詢和提取中使用了面向對象的語法。 請參閱作為參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM