2015-10-05 55 views
4

好的,我有一个带有三个表的数据库。 Q & A,类别和ID。类别包含类别,Q & A具有问题和答案,而ID具有各种类别的ID和附加的问题。我如何从数据库中提取数据,以便得到一个类别,然后是属于该类别的Q & A的循环?如何从数据库中提取常见问题解答页面?

function print_categories() { 
global $MySQL; 


if (($categories = $MySQL->select_all("SELECT * FROM QandA_wiki.categories")) !== false) { 
foreach ($categories as $citem) { 
$counter = 1; 
print"<div id=\"categories_start\" style=\"width:424px; margin:0 auto;\">\n"; 
print"<div id=\"category\" >\n"; 
print"<h2> {$citem['description']}</h2>"; 
print "<div class=\"col-lg-12 footerLine\"><hr /></div>"; 
    if (($questions = $MySQL->select_all("SELECT * FROM QandA_wiki.qanda")) !== false) { 
    foreach ($questions as $qitem) { 
     print"<div id=\"question_number\" >\n"; 
     print"<div id=\"questions\" >\n"; 
     print"<p>#: {$counter} -<strong>{$qitem['question']}</strong></p>"; 

     print"</div>\n"; 
     print"<p>  {$qitem['answer']}</p>"; 
     print "<div class=\"col-lg-12 footerLine\"><hr /></div>"; 


     print"</div>\n"; 

     print"<div style=\"clear:both;\"></div>\n"; 
     print"<br />\n"; 
     $counter=$counter+1; 
     } 
     } 
print"</div>\n"; 
print"</div>\n"; 

print"<div style=\"clear:both;\"></div>\n"; 
print"<br />\n"; 

}}}} 
+2

你想看看'LEFT JOIN'。通过这个查询'Q&A'表,'LEFT JOIN'与'Categories'表一起在'Categories'表上有一个'WHERE'子句。从那里,你可以迭代你的发现。 – camelCase

+0

如果您愿意,请考虑遵循以下简单的两步操作步骤:1.如果您尚未这样做,请提供适当的DDL(和/或sqlfiddle),以便我们可以更轻松地复制问题。 2.如果您尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。 – Strawberry

回答

1

我不知道你的表/列名的,但是这是一个LEFT JOIN的一个粗略的想法,可能会得到你所需要的

SELECT QandA_wiki.qanda.*, QandA_wiki.qanda.id, QandA_wiki.qanda.name_of_your_column 
FROM QandA_wiki.qanda 
LEFT JOIN QandA_wiki.categories 
ON QandA_wiki.qanda.category_id = QandA_wiki.categories.id // This is a guess here...likely will need to modify 
WHERE QandA_wiki.categories.name_of_your_column = name_you_want; // This where clause does the filtering as you needed 

而且,我不知道你的$MySQL功能的确但在mysqli它会是这个样子(其中$link是你的数据库连接信息):

$query = mysqli_query($link, 
    "SELECT QandA_wiki.qanda.*, QandA_wiki.qanda.id, QandA_wiki.qanda.name_of_your_column 
    FROM QandA_wiki.qanda 
    LEFT JOIN QandA_wiki.categories 
    ON QandA_wiki.qanda.category_id = QandA_wiki.categories.id 
    WHERE QandA_wiki.categories.name_of_your_column = name_you_want;"); 

那么你可以迭代OVE r $query。如果您通过用户输入获取类别,则应考虑使用准备好的语句。我希望这能让你朝着正确的方向前进

相关问题