生成 PHP 的 XML 脚本使用 foreach 循环将来自错误列值的文本放在三列表的节点元素之间


XML generating PHP script puts text from wrong column values between node elements from a three-column table using foreach loop

正在尝试从 returend SQL 查询结果生成 XML 文件。SQL 查询从表中返回ItemIdItemNameItemDescription Items。我想像这样列出 XML 中的ItemName

.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元素中ItemName

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

前两项的字符串说明以字母 D 和 H 开头。

是什么导致了这种行为?

如果我

理解正确,问题是循环遍历$row数组中每个键/值对的foreach()。我不认为这是您想要的行为,因为 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);
    }
...