Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 搜索多个列_Php_Mysql - Fatal编程技术网

Php 搜索多个列

Php 搜索多个列,php,mysql,Php,Mysql,我已经为我的数据库设置了一个搜索功能来查找兄弟姐妹的名字。我遇到了一个问题,兄弟姐妹被列在不止一列中。我想知道您是否可以使用WHERE with或查看数据库中的3列或更多列 这就是我现在拥有的 SELECT * FROM movie WHERE $dropdown_1 LIKE '%$search%'" dropdown\u 1可以是几个不同的东西,包括兄弟姐妹,但我希望在dropdown\u 1中选择兄弟姐妹时,它将查看兄弟姐妹\u 1,兄弟姐妹\u 2, SbLangsSy3和 SbLim

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

这就是我现在拥有的

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

dropdown\u 1
可以是几个不同的东西,包括兄弟姐妹,但我希望在
dropdown\u 1
中选择兄弟姐妹时,它将查看
兄弟姐妹\u 1
兄弟姐妹\u 2
,<代码> SbLangsSy3和 SbLimsSy4查看名称是否匹配。

< P> >可能是考虑数据库的时间。

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

`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 ...

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

它可能是考虑你的数据库的时候了。 要直接回答您的问题,您可以使用
进行多个匹配

`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 ...

但我坚持认为,如果您仍然可以帮助的话,请重新设计您的数据库:)。

在用户定义的变量中放置列名是一个坏主意,因为这样他们就可以在表中的任何位置进行搜索

你可能需要的是

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

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

你可能需要的是

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

@OMGPonies谢谢你,不过我很好奇,你会如何使用
联合体重写它呢<代码>如“%search%”的兄弟姐妹\u 1联合选择的位置。。。兄弟姐妹2喜欢“%search%”的地方……
@OMGPonies:我很好奇为什么使用UNION而不是OR。这与MySQL优化查询的方式有关吗?@JonathanLeffler:是的-
在我使用过的几乎所有数据库上都是出了名的执行者<如果不是像那样进行比较,中的code>将是一个选项。@OMGPonies:当一个联合及其结果的“重复消除”阶段仍然比OR查询快时,这是一个悲哀。当然,您需要在正确的位置有足够的括号才能使OR'd查询正常工作,如果存在除OR'd之外的其他筛选条件,您可能会获得更好的性能。我以前见过这个问题;我相信,一些数据库管理系统已经基本上克服了这一点,但可能不是全部。@OMGPonies谢谢你这么做,不过我很好奇,你会如何使用
联合
?:)<代码>如“%search%”的兄弟姐妹\u 1联合选择的位置。。。兄弟姐妹2喜欢“%search%”的地方……@OMGPonies:我很好奇为什么使用UNION而不是OR。这与MySQL优化查询的方式有关吗?@JonathanLeffler:是的-
在我使用过的几乎所有数据库上都是出了名的执行者<如果不是像那样进行比较,中的code>将是一个选项。@OMGPonies:当一个联合及其结果的“重复消除”阶段仍然比OR查询快时,这是一个悲哀。当然,您需要在正确的位置有足够的括号才能使OR'd查询正常工作,如果存在除OR'd之外的其他筛选条件,您可能会获得更好的性能。我以前见过这个问题;我相信,一些数据库管理系统已经基本上克服了这一点,但可能不是全部。