2011-10-27 13 views
1

私は2つのテーブルに1つは返信があり、2つ目は追加された友達があります。両方のテーブルには、友人(受信者)のIDと返信用のポスターのフィールドがあります。私は内部のこれらのテーブルをreceiver_idとadded_friendで結合します。ここで、 'friends'のusernameは$ _SESSION ['user'](ログされた人物)です。クエリの後に受け取ったのは、返信だけです(両当事者に表示されます)。返信を返信することはできません(両方の当事者は他の返信を見ることができません)。コードは論理的なようです...ありがとうございます。SQLコマンドで特定のクエリが呼び出されない

CREATE TABLE IF NOT EXISTS `friends` (
    `id` int(11) NOT NULL auto_increment, 
    `username` varchar(128) character set utf8 NOT NULL, 
    `added_friend` varchar(128) character set utf8 NOT NULL, 
    `friendname` varchar(128) character set utf8 NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ; 

    -- 

    CREATE TABLE IF NOT EXISTS `reply` (
    `rep_id` int(11) NOT NULL auto_increment, 
    `reply_comm` text character set utf8 NOT NULL, 
    `reply_poster` varchar(128) character set utf8 NOT NULL, 
    `reply_poster_id` int(11) NOT NULL, 
    `receiver_name` varchar(128) character set utf8 NOT NULL, 
    `receiver_id` int(11) NOT NULL, 
    `reply_date` date default NULL, 
    PRIMARY KEY (`rep_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;  

構造は以下のようになります。

テーブル '友人':

  username | added_friend 
      ===================== 
      mike  | 10 
      rob  | 20 

はテーブル '返信':

  reply_poster | receiver_id 
      ========================= 
      mike  | 20 
      rob  | 10 <- added friend id 

は、PHPのSQLコマンドはこれです:

 $repcheck2 = mysqli_query($connect,"SELECT * FROM reply INNER JOIN friends ON 
     receiver_id = added_friend WHERE username = '".$_SESSION['user']."' ORDER BY rep_id 
     DESC "); 

ログインしたときに両方の当事者が返信と投稿を表示する必要があります($ _SESSION ['user'])。返信が自分の投稿返信/コメントのみを返すことはできません。ありがとうございました...

答えて

0

始めに、私はちょうどそのようなクエリに生のセッションデータを置くことを見ていました。 MYSQLの注入を防ぐためにデータベースに行く前にそれをきれいにする必要があります。内部結合と曖昧さの可能性(各フィールド上に述べた、すなわちなし特定のテーブル名)よりも、それを理解することがはるかに簡単だ

SELECT * FROM `reply`, `friends` WHERE `friends`.`receiver_id`=`reply`.`added_friend` AND `friends`.`username`='".$_SESSION['user']."' ORDER BY `replies`.`rep_id` DESC 

また、個人的に私はこのようなクエリにしてください。

問題が解決するかどうかはわかりませんが、わかります。

出力できない場合は、出力を教えてください。私。どのような行をデータベースから出力するのか、それともエラーが出るのでしょうか?

+0

ありがとう、私はこれを試してみましょう.. –

+0

これは正しいです(どこに 'reply'.receiver_id' =' friends'.added_friend')あなたの答えの小さな間違いに気を付けてください。それ以外は、それはうまくいきません。私は他の部分が私の返信を見ることができないことを意味します。 –

+0

これはこれです:$ _SESSIONを取り除くと、問題はなくなり、返信は見られますが、すべての返信は特定のユーザに送られません - その理由は私が返信をフィルタリングする$ _SESSIONを使用した理由です - 奇妙なことにはうまくいきません。しかし正しく投稿を送信します(私は双方が自分の返信ではなく自分の返信を見ることができます) –

関連する問題