SQL命令不会调用特定查询

时间:2011-10-27 12:20:17

标签: php sql phpmyadmin mysqli

我有2个表,一个是回复,第二个是添加好友。两个表都有朋友(接收者)和回复海报的ID字段。我内心地将这些表连接到receiver_id和added_friend,其中'friends'中的用户名是$ _SESSION ['user'](记录的人)。我在查询后收到的只是回复(双方都看到了)并且无法查询回复(双方都看不到对方的回复)为什么会这样?代码似乎是合乎逻辑的......非常感谢。

   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']),但无法看到回复只返回自己的帖子回复/评论。非常感谢...

1 个答案:

答案 0 :(得分:0)

首先,我会注意将原始会话数据放入类似的查询中。它需要在进入数据库之前进行清理,以防止MYSQL注入。

另外,我个人也会这样做:

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

它比内连接和模糊的可能性更容易理解(即每个字段上没有提到特定的表名)。

不确定这是否能解决您的问题,但我们会看到。

如果不能,你能告诉我它输出的是什么吗?即它是从数据库输出任何行,还是输出任何错误?