Php 在这种情况下我可以使用IN子句吗?

Php 在这种情况下我可以使用IN子句吗?,php,mysql,mysqli,Php,Mysql,Mysqli,我要做一个网站,我想创造所有的DVD的,我拥有的。此外,我想把电影分类。我有这些桌子 类别: id-标题 电影: id-类别参考-等 假设我创建了几个类别:(动作ID:1,喜剧ID:2) 当我在adminpanel中创建电影时,我将有机会通过复选框选择更多类别。例如,我可以为《蜘蛛侠》选择动作片和喜剧 移动的行将如下所示: ID:1-category_ref:1/2(如果要向电影添加多个类别,则需要第三个表来存储它 Categories: id, title movies: id, title

我要做一个网站,我想创造所有的DVD的,我拥有的。此外,我想把电影分类。我有这些桌子

类别: id-标题

电影: id-类别参考-等

假设我创建了几个类别:(动作ID:1,喜剧ID:2)

当我在adminpanel中创建电影时,我将有机会通过复选框选择更多类别。例如,我可以为《蜘蛛侠》选择动作片和喜剧

移动的行将如下所示:


ID:1-category_ref:1/2(如果要向电影添加多个类别,则需要第三个表来存储它

Categories: id, title
movies: id, title
movie_categories: movieID, categoryID
那你就可以了

//categories
1 Action
2 Comedy

//Movies
1 Spiderman

//movie_categories
1 1   //connection between movieID 1 and categoryID 1 (spiderman & action)
1 2   //connection between movieID 1 and categoryID 2 (spiderman & comedy)
然后你就可以搜索了

SELECT id, title FROM movies WHERE ID IN(SELECT movieID FROM movie_categories WHERE categoryID=$catID)

如果要向电影添加多个类别,则需要第三个表来存储它

Categories: id, title
movies: id, title
movie_categories: movieID, categoryID
那你就可以了

//categories
1 Action
2 Comedy

//Movies
1 Spiderman

//movie_categories
1 1   //connection between movieID 1 and categoryID 1 (spiderman & action)
1 2   //connection between movieID 1 and categoryID 2 (spiderman & comedy)
然后你就可以搜索了

SELECT id, title FROM movies WHERE ID IN(SELECT movieID FROM movie_categories WHERE categoryID=$catID)

在这种情况下,应使用以下功能:

WHERE FIND_IN_SET($catID,(REPLACE(category_ref, '/', ','))>0

但如果您尚未以这种方式设计表,请使用第二个表存储
电影类别关系(请参见@Hugo\u Delsing answer)。

在这种情况下,您应该使用函数:

WHERE FIND_IN_SET($catID,(REPLACE(category_ref, '/', ','))>0

但如果您尚未以这种方式设计表,请使用第二个表来存储
电影类别
关系(请参见@Hugo_Delsing answer).

我现在可以看出,我犯了一个错误,没有创建第三个表来负责将电影组合到类别中。这是显而易见的制作方法。但是,我将保留我的构造并使用FIND_IN_SET。我永远不会忘记这种设计表结构的方法。谢谢,+1!我现在可以看出我犯了一个错误ot创建第三个表,负责将电影与类别相结合。这是显而易见的制作方法。但是,我将保留我的构造并使用FIND_IN_SET。我永远不会忘记这种设计表结构的方法。谢谢,+1!尽管使用另一个表结构更有利,但我将保持p上一个结构和使用FIND_IN_SET-这解决了我的问题。所以你应该得到接受的答案-谢谢!尽管使用另一个表结构更有利,但我将保持上一个结构并使用FIND_IN_SET-这解决了我的问题。所以你应该得到接受的答案-谢谢!