2012-05-07 14 views
0

returend SQLクエリ結果からXMLファイルを生成しようとしています。 SQLクエリは、ItemId,ItemName,ItemDescriptionからItemsテーブルを返します。 私はそうのようなXML内ItemName Sを一覧表示したい:XML生成PHPスクリプトは、foreachループを使用して3列のテーブルのノード要素間に間違った列値のテキストを挿入します

XML

... 
<item> 
    <name>ItemName1</name> 
</item> 
<item> 
    <name>ItemName2</name> 
</item> 
... 

PHP

... 
    while($items = @mysql_fetch_assoc($query)){ 
    foreach($items as $row){ 
    } 
     $node = $doc->createElement('item'); 
     $node = $root->appendChild($node); 
     $child = $doc->createElement('name'); 
     $child = $node->appendChild($child); 
     $value = $doc->createTextNode($row['ItemName']); // ! 
     $value = $child->appendChild($value); 
    }} 
... 

私のXML構造が適切に生成しますが、問題は、私が手ですアイテムのそれぞれの最初の文字はItemDescription、代わりにそのようなすべてのname要素内10:

... 
<name>D</name> 
... 
<name>H</name> 
... 

最初の2つの項目は、その文字列の説明は、この動作を引き起こしている何文字DおよびH.

で開始していますか?

答えて

1

私が正しく理解していれば、$row配列の各キーと値のペアをループしているforeach()という問題があります。 mysqlの結果セットの各行は通常は多次元ではないので、これがあなたが望む動作ではないと私は思います。インデックス 'ItemName'が見つからないため、デフォルト値は[0](値の最初の文字)です。私は今見る

... 
    $resultset = mysql_query($query); 
    while($row = @mysql_fetch_assoc($resultset)){ 
     $node = $doc->createElement('item'); 
     $node = $root->appendChild($node); 
     $child = $doc->createElement('name'); 
     $child = $node->appendChild($child); 
     $value = $doc->createTextNode($row['ItemName']); // ! 
     $value = $child->appendChild($value); 
    } 
... 
+0

はちょうどしばらく()ループを試してみてください。ありがとう。 – Bob

関連する問題