有两个表,它们具有关系(一对多)。有一个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 文件中,以便我可以打印类似“在午餐时间吃汉堡”之类的内容.
生成XML.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();
?>