在 PHP 中使用主/从 SQL 数据
Posted
技术标签:
【中文标题】在 PHP 中使用主/从 SQL 数据【英文标题】:Working with Master / Detail SQL Data in PHP 【发布时间】:2009-06-20 22:11:37 【问题描述】:我是新手,请多多包涵。我正在做一个有趣的小论坛。检查它:
分类:
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`position` int(11) NOT NULL,
PRIMARY KEY (`id`)
论坛:
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`description` text NOT NULL,
`position` int(11) NOT NULL,
`cat_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
我想知道我应该如何构造它,以便循环出它下面的类别和分配的论坛:/
我走对了吗?
<?php
$query = mysql_query("SELECT * FROM forums JOIN...");
while ($row = mysql_fetch_array($query)) ..
?>
也许一些 sql 大师可以帮助我。
干杯!
【问题讨论】:
【参考方案1】:如果您想在页面中显示包含论坛的类别,我怀疑您需要先获取类别的结果集,然后使用论坛列表的另一个循环遍历此列表。
连接将为您提供一个记录集,其中一列中包含类别,论坛在另一列中,为单个类别提供多行。正如另一个答案所说,您并不是真的在寻找加入:)
试试这样的:
$cat_rs = mysql_query("select id, name from categories");
while($cat_row = mysql_fetch_array($cat_rs))
// print category name from $cat_row[1]
$forum_rs = mysql_query("select name... from forums where cat_id = '" . $cat_row[0] ."'");
while($forum_row = mysql_fetch_array($forum_rs))
//print forum stuff
【讨论】:
与在一个查询中获取所有数据相比,在内部循环中进行这样的 mysql 查询会很慢。 你是对的,但我猜数据集很小,并且在 PHP 中进行所需的“选择不同”等效项的工作将涉及比适当的工作更多的工作;要么是带有条件的严重骇客,要么是构建分层数据集,这将成为一个更复杂的问题的主题:)【参考方案2】:我认为您最好阅读join tutorial 以帮助您了解基础知识。
【讨论】:
【参考方案3】:我不了解 PHP,但您似乎想使用单个查询来循环遍历类别,然后针对每个类别循环遍历论坛。
关系数据库不是这样工作的。查询以表的形式返回一组行。它没有父/子结构。
如果 PHP 能够做到这一点,您应该有一个父查询来返回所有类别,并循环访问它。对于每个类别,调用子查询以返回具有该类别 ID 的论坛。然后循环。
【讨论】:
以上是关于在 PHP 中使用主/从 SQL 数据的主要内容,如果未能解决你的问题,请参考以下文章