如何将外键链接的数据显示到映射表。

时间:2011-07-29 10:09:08

标签: php mysql foreign-keys

我一直在使用php我的管理员来创建数据库,现在是时候在我的网页上显示我的数据了。

我正在努力用外键显示链接到我的映射表的数据。

我的表格是:

子类别

subcategory_id(pk)| 子类别名称

Subsubcategory

subsubcategory_id(pk)| subsubcategory_name

Sub_subsub (映射表)

id(pk)| s_id(fk)| ss_id(fk)

s_id和ss_id是各个表的外键。

这是我正在玩的代码,没有任何乐趣。我还是很新的php

$dbc = mysql_connect($db_host,$db_user,$db_pass);
$sdb = mysql_select_db($db_database);

$query = "SELECT s_id as subcategory_id, ss_id as subsubcategory_id FROM sub_subsub";
$result = mysql_query($query, $dbc)
or die (mysql_error($dbc));

while($row = mysql_fetch_array($result)) {

$subcat = $row["s_id"];
$subsubcat = $row["ss_id"];

echo "<li>$subcat <span>$subsubcat</span></li>";
}

我可能错过了一些非常明显但我一直在寻找并且无法找到任何东西的东西。

1 个答案:

答案 0 :(得分:0)

好吧,在您的查询中,您为s_id字段提供了新名称(或别名)subcategory_id(查询中的s_id as subcategory_id部分),但在您的代码中,您仍尝试访问它名称s_id。尝试

$subcat = $row["subcategory_id"];

或者从查询中删除别名。与ss_id字段相似的内容。

尝试类似

的内容
SELECT 
  SC.Subcategory_name ,
  SS.subsubcategory_name
FROM Sub_subsub M
  JOIN Subcategory SC ON(SC.subcategory_id = M.s_id)
  JOIN Subsubcategory SS ON(SS.subsubcategory_id = M.ss_id)

获取名称对而不是ID对。

你的桌面设计看起来有些可疑......通常这种类别的层次只用一张桌子来完成,比如

TABLE TAB_Category (
  UID        PRIMARY KEY,
  Parent     FK REFERENCES TAB_Category(UID) ON UPDATE CASCADE,
  Name       
);

其中根项具有Parent = NULL。