我正在处理php上的多对多关系,我有3个表,movie表包含电影名称,movie id genre表包含流派和流派id,movie\u genre表包含电影id和流派id
类型表具有以下值
(1 ,'action'),
(2 ,'comedy'),
(3 ,'drama'),
(4 ,'mystery');
我使用下面的代码获取数据
$query = " SELECT movie_name,movie_id,genre FROM movies
JOIN movie_genre ON movies.movie_id = movie_genre.movie_id
JOIN genre ON movie_genre.genre_id = genre.genre_id
WHERE movie.movie_id = ?";
$stmt = mysqli_prepare($conn, $query);
$stmt->bind_param('i', $id);
$stmt->execute();
$result = $stmt->get_result();
if(mysqli_num_rows($result) > 0 ){
while ($row = mysqli_fetch_assoc($result)) {
echo ' movie_id: '.$row["movie_id"].' movie name:'.$row["movie_name"].'
Genres:' .$row["genre"]
}}
但结果是
电影名称类型[1]
电影名称类型[2]
电影名称类型[3]
一个例子
movie_id:55 movie name: titanic genre : action
movie_id:55 movie name: titanic genre : drama
movie_id:55 movie name: titanic genre : romance
我想要的结果是
movie_id:55 movie name: titanic genre : action drama romance
我确实尝试使用极限1,但结果只显示了第一种流派
2条答案
按热度按时间a64a0gku1#
需要做一个循环,只针对我不能测试的类型,所以这是把我想象的工作,但这将是沿着这些路线的东西,这里可能有语法错误
ghhkc1vu2#
你可以用
GROUP_CONCAT
以及GROUP BY
: