gpt4 book ai didi

php - 如何才能让每个电影标题只显示一次?

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

我目前在 PHP 中使用 mySQL。我的任务是列出给定搜索中出现的每部电影的所有 Actor 。搜索和结果工作正常。但是,我需要更改结果的显示。

$sql = "SELECT f.title, a.first_name, a.last_name 
FROM film as f, actor as a, film_actor as fa
WHERE (f.title LIKE \"%$filter%\")
AND fa.actor_id = a.actor_id
AND f.film_id = fa.film_id
ORDER BY f.title;";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
echo "The following movies match the filter value: &quot$filter&quot." . "</strong>" .
"</div>\n<br><br>\n";

// output data of each row
while(($row = $result->fetch_assoc())) {
echo
$row["title"] . " " . "stars" . " " .
$row["first_name"] . " " .
$row["last_name"] .
"</div>\n" .
"<br>\n";
}
} else {
echo "0 results";
}

通过上面的代码,我得到了这个:

“以下电影符合过滤器值:“choco”。

蝴蝶巧克力明星尼克·史泰龙
蝴蝶巧克力星星 MENA TEMPLE
蝴蝶巧克力明星 KIM ALLEN
蝴蝶巧克力明星丽莎梦露
蝴蝶巧克力明星 ED GUINESS
蝴蝶巧克力星星伯特·坦普尔
蝴蝶巧克力明星玛丽·凯特尔
巧克力哈利明星乔·斯旺克
巧克力哈里明星安息克劳福德
巧克力哈利明星柯克·乔沃维奇
......“

当我应该得到这个:

《蝴蝶巧克力》明星艾德·吉尼斯、玛丽·凯特尔、丽莎·梦露、尼克·史泰龙、伯特·坦普、米纳·坦普

《巧克力哈利》明星 RIP CRAWFORD、JANE JACKMAN、......

我尝试过 SELECT DISTINCT 但这只会让事情变得更加复杂。

最佳答案

您需要GROUP BY拍摄并然后使用 Group_Concat功能

$sql = "SELECT f.title, group_concat(concat(a.first_name, " ", a.last_name)) ActorNames 
FROM film as f, actor as a, film_actor as fa
WHERE (f.title LIKE \"%$filter%\")
AND fa.actor_id = a.actor_id
AND f.film_id = fa.film_id
GROUP BY f.title
ORDER BY f.title;";

并将循环修改为

while(($row = $result->fetch_assoc())) {
echo
$row["title"] . " " . "stars" . " " .
$row["ActorNames"] . " " .
"</div>\n" .
"<br>\n";

关于php - 如何才能让每个电影标题只显示一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40003668/

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