gpt4 book ai didi

php - 如何使用 PHP 过滤 MySQL 中的数据(一对多关系)

转载 作者:行者123 更新时间:2023-11-29 03:21:10 28 4
gpt4 key购买 nike

What I Want To Do

用户将使用 GET 发送一个值,我将把该值存储在名为 $category1 的变量中。现在将显示所有包含 $category1 值的行。这就像一个搜索系统。

This is my code

$stmt = $conn->prepare("SELECT tmdb_movies.movie_title
,GROUP_CONCAT(DISTINCT genres.genres_name SEPARATOR ', ') AS genres

FROM tmdb_movies

JOIN genres ON genres.genres_tmdb_id=tmdb_movies.tmdb_id

WHERE EXISTS (SELECT genres.genres_name FROM genres WHERE genres.genres_name = '$category1');

GROUP BY tmdb_movies.movie_title");

错误:由于 WHERE 存在行(IDK,是否应该使用它)

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1140 In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'DataBaseName.tmdb_movies.movie_title'; this is incompatible with sql_mode=only_full_group_by

现在让我解释一下我的表结构

我有两个表

  1. tmdb_movies(它存储电影标题和 tmdb_id)
  2. genres(存储流派,通过tmdb_id连接)

表格的例子。

tmdb_movies table

tmdb_id     movie_title
1 The_Dark_Night
2 Logan
3 IronMan

genres table

tmdb_id       genres
1 Action
1 Crime
1 Drama
2 Action
2 Drama
3 Action
3 Comedy

最佳答案

在 5.7 中,sqlmode 默认设置为:

ONLY_FULL_GROUP_BY,
NO_AUTO_CREATE_USER,
STRICT_TRANS_TABLES,
NO_ENGINE_SUBSTITUTION

要删除子句ONLY_FULL_GROUP_BY,您可以这样做:

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

这假设您需要使用非聚合列进行 GROUP BY。

否则我在本地测试了你的代码,它工作得很好。 enter image description here

关于php - 如何使用 PHP 过滤 MySQL 中的数据(一对多关系),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44793318/

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