
有两个表,它们具有关系(一对多)。有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:
<?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();
?>发布于 2012-04-26 04:00:52
在查询中联接这些表以利用您的FK关系。
Select meals.mealname, food.foodname from food join meals on (food.mealid = meals.mealid)https://stackoverflow.com/questions/10322788
复制相似问题