[英]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中使用了它。 但是我實際上還有第二個查詢需要實現。 第一個查詢處理所有標簽,例如Title , Date和同一級別上的所有其他標簽。 但是對於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.