我为我的数据库设置了一个搜索功能,以查找兄弟姐妹的名字。我遇到了一个问题,因为兄弟姐妹列在多个列中。我想知道你是否可以使用WHERE和OR来查看数据库中的3个或更多列。
这就是我现在所拥有的
SELECT * FROM movie WHERE $dropdown_1 LIKE '%$search%'"
dropdown_1
可以是几个不同的东西,包括兄弟姐妹,但我想在dropdown_1
中选择兄弟姐妹后,它会看siblings_1
,siblings_2
,{{1} }和siblings_3
查看名称是否匹配。
答案 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..