我有2个表,一个是回复,第二个是添加的朋友。这两个表都有朋友(接收者)和回复发帖的ids字段。我在receiver_id和added_friend上内部连接这些表,其中'friends‘中的用户名是$_SESSION'user'。我在查询后收到的只是回复(双方都能看到),不能查询回复(双方都看不到对方的回复),这是为什么呢?代码似乎logical...Thanks了很多。
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 ; 结构看起来像这样:
表'friends‘:
username | added_friend
=====================
mike | 10
rob | 20表‘回复’:
reply_poster | receiver_id
=========================
mike | 20
rob | 10 <- added friend idPHP 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‘)时都应该看到回复和帖子,但只有他们自己的帖子回复/评论才能看到回复。非常感谢。
发布于 2011-10-27 20:49:00
首先,我会观察如何将原始会话数据放入这样的查询中。它需要在进入数据库之前进行清理,以防止MYSQL注入。
另外,就我个人而言,我会这样查询:
SELECT * FROM `reply`, `friends` WHERE `friends`.`receiver_id`=`reply`.`added_friend` AND `friends`.`username`='".$_SESSION['user']."' ORDER BY `replies`.`rep_id` DESC它比内部连接和歧义的可能性更容易理解(即在每个字段上没有提到特定的表名)。
不确定这是否能解决您的问题,但我们会看到的。
如果没有,你能告诉我它的输出是什么吗?也就是说,它是否从数据库中输出任何行,或者任何错误?
https://stackoverflow.com/questions/7915737
复制相似问题