所以我正在创建一个帖子喜欢系统,我创建了一个包含PostID,UserID,Title,Content和Likes的帖子的表,剩下的东西我认为是一个包含已经喜欢帖子的usersID的列,所以他们不能喜欢它一次又一次,我真的希望有人给我一个如何做到这一点的想法
答案 0 :(得分:1)
您的喜欢应该在他们自己的表中,以免违反数据库架构规则,尤其是First Normal Form:
CREATE TABLE `PostLike` (
`UserID` CHAR(15) REFERENCES `User`(`Id`) ON DELETE CASCADE,
`PostID` CHAR(15) REFERENCES `Post`(`Id`) ON DELETE CASCADE,
UNIQUE INDEX (`UserID`,`PostID`)
)
此时,由于唯一索引约束,您的表将自动拒绝任何插入。
答案 1 :(得分:1)
你需要创建一个单独的表来保存postid&用户身份。这样你可以有20个人喜欢评论,但你可以查询以检查用户是否已经喜欢它。这就是你的mysql表中的样子:
Table (comments)
-----------------
PostID
UserID
Title
Content
然后是一个单独的表格:
Table (likes)
-----------------
LikeID (Just to make sure you have an index key)
UserID (This would be the user id of user adding like)
PostID (This post id would be from the comments table)
LikedDate (this is optional)
然后,当您在执行此操作之前添加类似内容时,请执行一个非常简单的SQL查询,以检查userid和postid是否已在likes表中。例如:
SELECT LikeID FROM likes_table WHERE UserID = ***** AND PostID = *****
然后在添加之前简单地执行php查询:
if($rows_returned == 0){
//add the like to likes table
}else{
//throw an error that the like has already been added
}
希望这有帮助!