我有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']),但无法看到回复只返回自己的帖子回复/评论。非常感谢...
答案 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
它比内连接和模糊的可能性更容易理解(即每个字段上没有提到特定的表名)。
不确定这是否能解决您的问题,但我们会看到。
如果不能,你能告诉我它输出的是什么吗?即它是从数据库输出任何行,还是输出任何错误?