这是我当前的代码,它可以很好地解决一个问题。
$stmt = $conn->prepare("SELECT * FROM tmdb_movies JOIN genres ON genres.genres_tmdb_id=tmdb_movies.tmdb_id
");
// Then fire it up
$stmt->execute();
// Pick up the result as an array
$result = $stmt->fetchAll();
// Now you run through this array in many ways, for example
foreach ($result as $row) {
print "".$row["movie_title"]." ".$row["genres_name"] ." ".$row["cast_name"] ."<br/>";
}
问题是,我试图呼应电影名称及其流派。
我想回应的是:
The Dark Knight - Action, Crime, Drama
代码回显什么:
The Dark Knight - Action
The Dark Knight - Crime
The Dark Knight - Drama
主电影表截图http://prntscr.com/fokwip
及类型电影表截图http://prntscr.com/fokwoy
最佳答案
要回显您想要的内容,您可以更改 sql 查询:
$stmt = $conn->prepare("SELECT *, GROUP_CONCAT(genres.genres_name SEPARATOR ', ') AS genre_concat FROM tmdb_movies JOIN genres ON genres.genres_tmdb_id=tmdb_movies.tmdb_id GROUP BY tmdb_movies.movie_title");
// sql strict group by
$stmt = $conn->prepare("SELECT tmdb_movies.movie_title, tmdb_movies.cast_name, GROUP_CONCAT(DISTINCT genres.genres_name SEPARATOR ', ') AS genre_concat FROM tmdb_movies JOIN genres ON genres.genres_tmdb_id=tmdb_movies.tmdb_id GROUP BY tmdb_movies.movie_title, tmdb_movies.cast_name ORDER BY tmdb_movies.movie_title");
$stmt->execute();
$result = $stmt->fetchAll();
foreach ($result as $row) {
print "".$row["movie_title"]." ".$row["genre_concat"] ." ".$row["cast_name"] ."<br/>";}
GROUP_CONCAT 允许为每个独特的电影标题连接所有不同的类型。
更多文档:
分组依据:https://www.w3schools.com/sql/sql_groupby.asp
GROUP_CONCAT:https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat
关于php - 如何使用 PHP 选择和回显 MySQL 数据(一对多),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44771580/