首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP DOM XML输出:缺少数据集

问PHP DOM XML输出:缺少数据集
EN

Stack Overflow用户
提问于 2012-09-03 03:57:18
回答 1查看 238关注 0票数 2

在MYSQL数据库上使用php查询,并使用DOM输出xml文件,一切都很正常,只是并不是所有的数据集都写入到xml文件中。例如,我可以给出预期结果的数量:

代码语言:javascript
复制
$num_results = mysql_num_rows($result);
echo $num_results;

其例如是20,但是在所保存的xml文件("auswertung.xml")中仅存在19个条目。每次都不会写入第一个数据集。会出什么问题呢?

下面是相关的代码片段:

代码语言:javascript
复制
// Start XML file, create parent node
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);

// Opens a connection to a mySQL server
$connection=mysql_connect ($dbhost, $username, $password);
if (!$connection) {
    die('Not connected : ' . mysql_error());
}

// Set the active mySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
    die ('Can\'t use db : ' . mysql_error());
}


$query = "SELECT * FROM Herpeto WHERE Art like '$Art' ORDER BY ID ASC";
$result = mysql_query($query) or die ("Error in query: $query " . mysql_error());
$row = mysql_fetch_array($result);
$num_results = mysql_num_rows($result);

// Iterate through the rows, adding XML nodes for each
echo $num_results;
while ($row = @mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
$node = $dom->createElement("marker");
$newnode = $parnode->appendChild($node);

$newnode->setAttribute("Art", $row['Art']);
$newnode->setAttribute("Anzahl", utf8_encode ($row['Anzahl']));
$newnode->setAttribute("Status", $row['Status']);
$newnode->setAttribute("Stadt", utf8_encode($row['Stadt']));
$newnode->setAttribute("Fundstelle", utf8_encode($row['Fundstelle']));
$newnode->setAttribute("Bemerkung", utf8_encode($row['Bemerkung']));
$newnode->setAttribute("Tag", utf8_encode ($row['Tag']));
$newnode->setAttribute("Monat", utf8_encode ($row['Monat']));
$newnode->setAttribute("Jahr", utf8_encode ($row['Jahr']));
$newnode->setAttribute("Beobachter", utf8_encode($row['Beobachter']));
$newnode->setAttribute("lat", $row['lat']);
$newnode->setAttribute("lng", $row['lng']);
}

$dom->save('auswertung.xml');
EN

回答 1

Stack Overflow用户

发布于 2012-09-03 04:32:14

输出中的20行中有19行,因为您在将结果传递给while循环之前调用了mysql_fetch_array(),在while循环中实际进行了xml输出:

代码语言:javascript
复制
$row = mysql_fetch_array($result); // <-- here you get the first row
//...
while ($row = @mysql_fetch_assoc($result)){ // <-- now while loop starts from 2nd row
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12239280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档