有两个表,它们有一对(一对多)。有Meals
表,其中包含早餐(id: 1
),早午餐(id: 2
),午餐(id: 3
),茶(id: 4
),晚餐等值(id: 5
)和晚餐(id: 6
)。然后有Foods
表,其中包含各种食物,每种食物(即汉堡包)通过外键与特定类型的食物(即午餐)相关联。因此,行idfood: 12; idmeal: 3; foodname: "Hamburger"
意味着"Hamburger"
属于Lunch
膳食类型。
我创建了一个XML生成器文件,它将整个Food
表的内容提取到XML文件中。问题是我想将idmeal
外键值从Meal
表中转换为XML中每个食物元素的实际膳食名称。
简单的方法是包含来自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();
?>
答案 0 :(得分:2)
加入查询中的表格以利用您的FK关系。
Select meals.mealname, food.foodname from food join meals on (food.mealid = meals.mealid)