【问题标题】:Generate single XML file based on data from two tables or more根据来自两个或更多表的数据生成单个 XML 文件
【发布时间】:2012-04-25 19:54:22
【问题描述】:

有两个表,它们有关系(一对多)。有 Meals 表,其中包含诸如早餐(id: 1)、早午餐(id: 2)、午餐(id: 3)、茶(id: 4)、晚餐(id: 5)和晚餐(@987654328)等值@)。然后是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();

?>

【问题讨论】:

    标签: php mysql html xml


    【解决方案1】:

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

    Select meals.mealname, food.foodname from food join meals on (food.mealid = meals.mealid)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      相关资源
      最近更新 更多