While语句帮助(PHP)


While statement help (PHP)

我的数据库包含问题和答案。问题有一个ID(intQAID),回答有一个标识(intResponseID)。intRespondID与它响应的intQAID相同。数据库中的每个条目都有自己的ID,即intPostID。

我想做的是编写一个查询,获取所有这些信息,并使用while语句将其发布到网站上。然而,结构需要是"问题",下面是答案,直到while循环结束。

我可以让问题发布:

$question = mysql_query("SELECT *,
(SELECT cUsername FROM tblUsers tblU WHERE Q2.intPosterID = tblU.intUserID) AS username, 
(SELECT DATE_FORMAT(dPostDateTime, '%b %e %Y %H:%i')) AS post_time 
FROM tblQA Q2 WHERE intResponseID = 0 
ORDER BY Q2.dSortDateTime DESC, Q2.intQAID DESC LIMIT 40");
while($row = mysql_fetch_array($question))
{
echo "<tr class='forum'>";
echo "<td class='forum'>" . substr($row['cBody'], 0, 150) . "</td>";
echo "<td class='forum'>" . $row['cCategory'] . "</td>";
echo "<td class='forum'>" . $row['username'] . "</td>";
echo "<td class='forum'>" . $row['post_time'] . "</td>";
echo "</tr>";
}

但是我怎样才能让它在同一个while语句中发布答案呢?

应该这样输出:

Question 1:
  Answer 1:
Question 2:
  Answer 2:
Question 3:
  Answer 3:
etc....

在自身上加入表:

SELECT 
*,
(SELECT cUsername FROM tblUsers tblU WHERE Q2.intPosterID = tblU.intUserID) AS username, 
(SELECT DATE_FORMAT(dPostDateTime, '%b %e %Y %H:%i')) AS post_time 
FROM       tblQA Q2 
JOIN       tblQA AS tblQAjoin ON tblQAjoin.intRespondID = Q2.intPostID
WHERE      Q2.intResponseID = 0   
ORDER BY   Q2.dSortDateTime DESC, Q2.intQAID DESC 
LIMIT      40

不过,我不知道你为什么要这样设计你的桌子。如果每个问题只能有一个答案,为什么不简单地在一行中有两列,一列包含问题,另一列包含答案?

尝试使用JOIN语句。只要你的问题和答案是一对一的,你就应该能够一蹴而就。

http://dev.mysql.com/doc/refman/5.0/en/join.html

如果每个问题只有一个答案,那么您应该通过使用intRespondID和intQAI将问题表与答案表连接起来,在一个查询中获得这两个问题的数据。

然后,通过while循环的每一次旅行都有一个,第一行上你想要什么,第二行上你想什么,最后是。因此,一次回路跳闸不必只显示一行输出。