1

图表

有两个表,它们具有关系(一对多)。有一个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();

?>
4

1 回答 1

2

加入查询中的表以利用 FK 关系。

Select meals.mealname, food.foodname from food join meals on (food.mealid = meals.mealid)
于 2012-04-25T20:00:52.383 回答