簡體   English   中英

While語句幫助(PHP)

[英]While statement help (PHP)

我的數據庫包含問題和答案。 問題具有ID(intQAID),響應具有ID(intResponseID)。 intRespondID與其響應的intQAID ID相同。 數據庫中的每個條目都有其自己的ID,即intPostID。

我想做的是編寫一個查詢,它將獲取所有這些信息,並使用while語句將其發布到網站上。 但是,該結構需要為Question,並在其下為答案,直到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循環的每次行程都有a,無論您在第一行上想要什么,a,a,在第二行上想要什么,最后是a。 因此,遍歷循環的過程不必只顯示一行輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM