在PHP中管理MySQL集数据类型

在PHP中管理MySQL集数据类型,php,mysql,sql,types,set,Php,Mysql,Sql,Types,Set,我在MySQL数据库中有以下数据类型的“Ambience”列: set('Funny', 'Sad', 'Scary') 我通过PHP查询数据时使用: $result = mysqli_query($con,"SELECT * FROM Films"); 我想知道如何在客户端处理这种数据类型。例如,我想找一部恐怖片,然后打印出来。我是否应该将整套数据类型视为字符串?如果您想要一部恐怖电影: SELECT * FROM Films WHERE FIND_IN_SET('Scary', Ambi

我在MySQL数据库中有以下数据类型的“Ambience”列:

set('Funny', 'Sad', 'Scary')
我通过PHP查询数据时使用:

$result = mysqli_query($con,"SELECT * FROM Films");

我想知道如何在客户端处理这种数据类型。例如,我想找一部恐怖片,然后打印出来。我是否应该将整套数据类型视为字符串?

如果您想要一部恐怖电影:

SELECT * FROM Films WHERE FIND_IN_SET('Scary', Ambience) > 0;

这是一个糟糕的设计,因为您需要搜索环境字段的特定值。您可以使用FIND_IN_SET,但查询速度会很慢。将环境设置为原子值

那么,您认为存储多个“环境”值的最佳方法是什么?仅为环境创建一个单独的表(例如使用布尔位)是一个好主意吗?每列的数据类型?将有3列:“有趣”、“悲伤”、“可怕”您可以用三列创建新表,并使用表主键创建环境字段,以提高性能主键应为整数谢谢@Saurabh Chandra Patel!如果我有100列,这仍然是一个最佳的解决方案吗?100种“氛围”嗯,你没有回答我的最后一个问题:P。但是无论如何,谢谢你的想法。正如Saurabh Chandra Patel所注意到的,那会很慢。