首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于来自两个或更多表的数据生成单个XML文件

基于来自两个或更多表的数据生成单个XML文件
EN

Stack Overflow用户
提问于 2012-04-26 03:54:22
回答 1查看 455关注 0票数 1

有两个表,它们具有关系(一对多)。有Meals表,其中包含早餐(id: 1)、早午餐(id: 2)、午餐(id: 3)、茶(id: 4)、晚餐(id: 5)和晚餐(id: 6)等值。然后是Foods表,其中包含各种食物,并且每种食物(例如汉堡)通过外键与特定类型的餐(例如午餐)相关联。因此,行idfood: 12; idmeal: 3; foodname: "Hamburger"将意味着"Hamburger"Lunch meal类型。

我创建了一个XML生成器文件,它将整个Food表的内容拉到一个XML文件中。问题是,我希望为idmeal中的每个食物元素将XML外键值转换为Meal表中的实际餐饮名称。

简单的方法是包括来自Food表的外键数字,但这太隐蔽了(即在3次时间内吃汉堡)。相反,我想让它基于任何外键数字- XML将把Meals表(mealname)中的正确值插入到那个包含食物的XML文件中,这样我就可以打印出像“午餐时间吃汉堡”这样的东西。

GenerateXML.php:

代码语言:javascript
复制
<?php
require("includes/credentials.php");

$doc = new DOMDocument("1.0");
$node = $doc->createElement("foods");
$parnode = $doc->appendChild($node);

$connection=mysql_connect($host, $usr, $pass);
if (!$connection) {
  die('Not connected : ' . mysql_error());
}

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

$query = "SELECT * FROM food";
$result = mysql_query($query);
if (!$result) {
  die('Invalid query: ' . mysql_error());
}

header("Content-type: text/xml");

while ($row = @mysql_fetch_assoc($result)){

  $node = $doc->createElement("food");
  $newnode = $parnode->appendChild($node);

  $newnode->setAttribute("idfood", $row['idfood']);
  $newnode->setAttribute("idmeal", $row['idmeal']);
  $newnode->setAttribute("foodname", $row['foodname']);
}

echo $xmlfile = $doc->saveXML();

?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-26 04:00:52

在查询中联接这些表以利用您的FK关系。

代码语言:javascript
复制
Select meals.mealname, food.foodname from food join meals on (food.mealid = meals.mealid)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10322788

复制
相关文章

相似问题

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