2017-04-20 7 views
0

私はPHPでチャットサーバーを構築しています。もっとfacebookと1対1のようなチャット。私はチャットしている2人のユーザーのメッセージを表示するクエリを理解することはできません。私は私がチャットできる人のリストを持っており、私はアンカータグでこれをやっています。しかし、送信者がメッセージを送信したことがないにもかかわらず、送信者のメッセージはチャットウィンドウに表示されます。ユーザーがチャットリスト内のユーザーとチャットしたことがない場合は、メッセージを表示しない方法を見つけられません。ここ messengerのような機能

は、あなたが言っているように見えますクエリ

public function getMessages($rid,$userid) { 
    $messages = array(); 
    $query = <<<QUERY 
    SELECT 
    `chat`.`message`, 
    `chat`.`sent_on`, 
    `chat`.`rec_id`, 
    `user1`.`id`, 
    `user1`.`first_name` 
    FROM `user1` 
    JOIN `chat` 
    ON `chat`.`user_id` = `user1`.`id` WHERE `user1`.`id`=$rid or `user1`.`id`=$userid 
    ORDER BY `sent_on` 
    QUERY; 
+1

あなたのアプリケーションの詳細を教えてください。値を連結するのではなく、準備された要求を使用します。 – Hulothe

答えて

0

リストここ

echo"<a href='chat/public/01_index.php?id2=$xyz'>Chat</a>"; 

のコードされている場所をユーザー1 =参加ユーザのいずれかが、あなたはチェックされていませんユーザー2

public function getMessages($rid,$userid) { 
    $messages = array(); 
    $query = <<<QUERY 
    SELECT 
    `chat`.`message`, 
    `chat`.`sent_on`, 
    `chat`.`rec_id`, 
    `user1`.`id`, 
    `user1`.`first_name` 
    FROM `user1` 
    JOIN `chat` 
    ON `chat`.`user_id` = `user1`.`id` WHERE (`user1`.`id`=$rid AND `user2`.`id` = $userid) or (`user1`.`id`=$userid AND `user2`.`id` = $rid) 
    ORDER BY `sent_on` 
    QUERY; 
+0

user2テーブルが存在しません。私は2つのテーブルを持っています:user1は、ログインしたユーザーのIDを取得し、それらの間で結合が発生します。チャットテーブルには、メッセージの詳細、つまりsenderid、receiverid、message、sent_onなどがあります。 –

関連する問題