2011-06-27 169 views
1

我正在創建一個非常簡單的腳本。該腳本的目的是從數據庫中提取問題並顯示與該特定問題相關的所有答案。我們在這裏處理兩個表格,並且從問題數據庫到答案數據庫有一個外鍵,所以答案與問題相關聯。循環訪問數據庫查詢

希望是足夠的解釋。這是我的代碼。我想知道這是否是最有效的方式來完成這個或有一個更簡單的方法?

<html> 
<head> 
<title>Advise Me</title> 
<head> 
    <body> 

    <h1>Today's Question</h1> 
    <?php 

    //Establish connection to database 
    require_once('config.php'); 
    require_once('open_connection.php'); 

    //Pull the "active" question from the database 
    $todays_question = mysql_query("SELECT name, question 
            FROM approvedQuestions 
            WHERE status = active") 
            or die(mysql_error()); 

    //Variable to hold $todays_question aQID 
    $questionID = mysql_query("SELECT commentID FROM approvedQuestions 
           WHERE status = active") 
           or die(mysql_error()); 

    //Print today's question 
    echo $todays_question; 

    //Print comments associated with today's question 
    $sql = "SELECT commentID FROM approvedQuestions WHERE status = active"; 
    $result_set = mysql_query($sql); 
    $result_num = mysql_numrows($result_set); 
    for ($a = 0; $a < $result_num; $a++) 
     { 
      echo $sql; 
     } 

    ?> 


    </body> 
</html> 
+1

爲什麼要進行3個不同的查詢以獲得同一行中的不同列?而且,在循環中,您正在有效地打印出您的SQL查詢,而不是結果集。 – jerluc

+1

+1給jerluc,@DrakeNET,$ sql對我沒有意義。 –

回答

0

我Tlooks像youre實際上並沒有g the問題或評論文本...不知道這是否是一個問題。由於只有永遠一個問題(????)我會jjoin所有評論的問題,這樣做的:

$query = "SELECT q.*, c.* FROM approvedQuestions q LEFT JOIN comments c ON (q.id = c.questionID) WHERE q.status = 'active'"; 

$result = mysql_query($query); 
if(mysql_num_rows()){ 
    while(false !== ($row = mysql_fetch_assoc($result)){ 
    // $row contains all columns for both question and record as array keys 
    echo $row['commentID']; 
    echo $row['id']; 
    echo $row['name']; 
    } 
} 

不,這將pront問題的信息,每次打印的答案信息,但該可以通過在循環前獲取第一個ro並將問題數據拉入另一個數組,然後倒回結果集並調用循環來輕鬆解決。