0

尝试从返回的 SQL 查询结果生成 XML 文件。SQL 查询从表中返回ItemId, ItemName, 。我想像这样列出XML 中的 s :ItemDescriptionItemsItemName

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,而不是ItemName在每个name元素中,如下所示:

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

前两项的字符串描述以字母 D 和 H 开头。

是什么导致了这种行为?

4

1 回答 1

1

如果我理解正确,问题是循环遍历数组foreach()中的每个键/值对。$row我认为这不是您想要的行为,因为 mysql 结果集中的每一行通常不是多维的。因为找不到索引“ItemName”,所以它默认为 [0](值的第一个字符)。

试试 while() 循环:

...
    $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);
    }
...
于 2012-05-07T20:09:20.280 回答