2011-06-27 11 views
1

私は非常に簡単なスクリプトを作成しています。スクリプトの目的は、データベースから質問を取り出し、その特定の質問に関連するすべての回答を表示することです。ここでは2つのテーブルを扱っており、質問データベースから回答データベースへの外部キーがあるので、回答は質問に関連付けられています。データベースクエリをループする

十分な説明があれば幸いです。ここに私のコードです。私はこれがこれを完了するための最も効率的な方法であるか、より簡単な方法があるのだろうかと思っていましたか?

<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

I Tlooks youreのは実際に質問をgabbingまたはテキストをコメントしていないような... thatsの場合は、問題を知っているかいないいけません。

$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が、その考えはない:一つの質問(????)私は質問へのすべてのコメントをjjoinだろうし、それがそのようんは今までありますので、ループの前に最初のroをフェッチし、質問データを別の配列に引き込み、結果セットを巻き戻してループを呼び出すことで簡単に解決できます。

関連する問題