搜索超过1列

时间:2012-04-03 03:22:31

标签: php mysql

我为我的数据库设置了一个搜索功能,以查找兄弟姐妹的名字。我遇到了一个问题,因为兄弟姐妹列在多个列中。我想知道你是否可以使用WHERE和OR来查看数据库中的3个或更多列。

这就是我现在所拥有的

SELECT * FROM movie WHERE $dropdown_1 LIKE '%$search%'"

dropdown_1可以是几个不同的东西,包括兄弟姐妹,但我想在dropdown_1中选择兄弟姐妹后,它会看siblings_1siblings_2,{{1} }和siblings_3查看名称是否匹配。

2 个答案:

答案 0 :(得分:3)

现在可能需要考虑Normalizing您的数据库了。

要直接回答您的问题,您可以使用OR进行多项匹配

`siblings_1` LIKE '%search%' OR `siblings_2` LIKE '%search%' # etc...

或者,正如OMGPonnies在下面的评论中指出的那样,使用UNION更快:

WHERE siblings_1 LIKE '%search%' UNION SELECT ... WHERE siblings_2 LIKE '%search%' # etc ...

但我坚持,如果你仍然可以帮助它,重新设计你的数据库:)。

答案 1 :(得分:1)

将列名放在用户定义的变量中是个坏主意,因为它们可以搜索表中的任何位置。

你可能需要的更像是

SELECT * FROM movie WHERE `dropdown_column` LIKE '%$search%'" OR `sibling_column` LIKE '%$search%'" etc..