gpt4 book ai didi

php - "Liking"PHP/MySQL 中的个别评论

转载 作者:行者123 更新时间:2023-11-29 05:18:56 25 4
gpt4 key购买 nike

我使用 PHP 和 MySQL 为我运行的奇幻电影联盟(类似于奇幻足球,但用于电影)构建了一个网站。每部电影的个人资料页面都有一个您可以发表评论的地方,我的那部分工作正常。现在,我想添加“喜欢”个人评论的功能,但我遇到了一些麻烦。我想我已经正确设置了“喜欢”表,并且我可以为每个单独的评论添加一个喜欢,但是在每个评论中显示喜欢是另一回事。

这是“评论”表的代码:

CREATE TABLE `comments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`movie_id` int(11) NOT NULL,
`player_id` tinyint(2) NOT NULL,
`date_time` datetime NOT NULL,
`comment` text CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这是“likes”表的代码:

CREATE TABLE `likes` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`player_id` int(2) NOT NULL,
`comment_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `player_comment` (`player_id`,`comment_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

这是“玩家”表的代码:

CREATE TABLE `players` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(10) NOT NULL,
`username` char(10) NOT NULL,
`password` char(32) NOT NULL,
`email` varchar(100) NOT NULL DEFAULT '',
`active` tinyint(1) NOT NULL,
`admin` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

现在,这是我用来获取任何特定电影的所有评论的 SQL 语句:

SELECT comments.id as comment_id, comments.player_id, comments.date_time, comments.comment,
players.first_name
FROM comments
LEFT JOIN players on players.id = comments.player_id
WHERE movie_id = $movie_id
ORDER BY date_time ASC

我的问题是,我不确定如何为同一条语句中的每条评论获取所有点赞。我希望能够显示喜欢该特定评论的每个玩家的名字。所以我希望它看起来像这样:

  • 第 1 行:$comment
  • 第 2 行:$commenter_first_name
  • 第 3 行:$liker_first_name1、$liker_first_name2、$liker_first_name3 喜欢这个

我能够让所有喜欢这样的个人评论的人:

SELECT first_name
FROM likes
LEFT JOIN players on players.id = likes.player_id
WHERE comment_id = 264
ORDER BY first_name ASC

但我不知道如何在不使用实际的 comment_id 的情况下合并它。

希望这是有道理的,我欢迎任何可能的帮助。

最佳答案

怎么样:

SELECT comments.id as comment_id, comments.player_id, comments.date_time, comments.comment, likers.names
FROM comments
LEFT JOIN
(SELECT comment_id, GROUP_CONCAT(first_name) AS names FROM likes
INNER JOIN players ON likes.player_id = players.id GROUP BY comment_id) AS likers
ON comments.id = likers.comment_id
WHERE movie_id = $movie_id
ORDER BY date_time ASC

“喜欢者”表应该有这样的东西:

| (comment_id) | Bob,Jim,Kathy |

为了更好的列表格式,您可以指定一个分隔符:

GROUP_CONCAT(first_name SEPARATOR ', ') 

关于php - "Liking"PHP/MySQL 中的个别评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28776891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com