2011-12-15 15 views
2

こんにちは私はwhileループ中にデータベーステーブル "shout_out"をクエリしようとしています。 "convers_id"カラムがno_replyから変更されたかどうかをチェックするif文があります。私は別のクエリを実行し、同じ "convers_id"列を持つshout_out_replyテーブルからすべての行を取得する必要がある場合。私はfacebookの "壁"と同様のレイアウトを取得しようとしています。一部の人はコメントを作成し、他の人はそのコメントに元のコメントのもとで返信することができます。mysqlクエリでmysqlクエリを実行します。

私はmysqli_query($ dbc、$ query_shout_out_reply)が失敗しているのを覚えています。しかし、回答者は同じ「convers_id」

$query_shout_out = "SELECT * FROM shout_out WHERE sent_to = '$username' "; 
$shout_out_query = mysqli_query($dbc, $query_shout_out); 

if (mysqli_num_rows($shout_out_query) != 0) { 
    while ($row = mysqli_fetch_array($shout_out_query)) { 
     echo '<td class="shout_out_display" width="550">'; 
     echo $row['message'] . ' <br/><br/> From ' . $row['sent_by'] . ' at ' . $row['date_sent']; 
     echo '</td></tr>'; 
     echo $row['convers_id']; 
     if ($row['convers_id'] != "no_reply") { 
      $query_shout_out_reply = "SELECT * FROM shout_out_reply WHERE convers_id = " . $row['convers_id']; 
      $shout_out_reply_query = mysqli_query($dbc, $query_shout_out_reply); 

      while ($reply_row = mysqli_fetch_array($shout_out_reply_query)) { 
       echo ' <tr width="550"><td width="125" > &nbsp </td>'; 
       echo '<td width="425" class="shout_out_reply_display">'; 
       echo $reply_row['message'] . '<br/><br/>Reply From ' . $reply_row['sent_by'] . ' at ' . $reply_row['date_sent']; 
       echo '</td></tr>'; 
      } 
     } 

    } 
} 
+2

私は答える時間がありませんが、通常ループ内でクエリを実行することは悪い考えです。 –

+0

何が失敗したのですか?返される行はありませんか? – Robert

+0

私はvar_dump()を実行するとBooleanが失敗すると言います – Cjueden

答えて

1
SELECT * FROM shout_out AS so LEFT JOIN shout_out_reply AS sor ON sor.convers_id = so.convers_id WHERE so.sent_to = '$username' AND so.convers_id != 'no_reply' 

ここで重要なのは、SQL文をJOINを使用することであるとあります。 1つのステートメントで両方のテーブルの結果が得られます。 ...あなたはループを通過する必要はありません。それらのすべてのSQLリクエストを作成します。

+0

私のテーブルはそう設定されています。メッセージ| sent_to date_sent | ip | convers_id | reply_idは、shout_out_replyのFKであり、Primaryは、shout_outのconvers_idです。どのように2つの違いがありますか? – Cjueden

+0

...私が提供したステートメントで定義されたエイリアスを使用します。しかし、彼らは同じ価値観ではありませんか?そうでない場合、これを行うことができます: 'SELECT so.convers_id AS so_con、sor.convers_id as sor_con FROM ...' ...または私はあなたを誤解していますか? –

+0

私はこれが書き込みトラックにあると思いますが、OG投稿のような複数の「コメント」を取得してから、次のOG投稿でやりとりしますが、多くの返信を開始する必要があります – Cjueden

0

あなたはマストデザインのテーブルを使用して、簡単にジョインや複雑なクエリーを作成します。まず第一に、作品がどのように結合し、いつ使用する必要があるのか​​を理解する必要があります。これをgoogleにチェックしてください。

関連する問題