参数无法正常工作

参数无法正常工作

我正在我的“search.php”中为一个数据库构建一个搜索函数,在这个数据库中存储有关ip地址和各种单元的信息。每个单元在数据库中都有一个“类别”列。我的搜索选择是在文本字段中搜索,和/或在下拉列表中选择类别。当我在下拉列表中选择一个类别,而没有在文本字段中键入任何内容时,我将得到正确的结果(返回包含所选类别的所有行)。
但当我在文本字段中键入任何内容时,都不会得到任何结果。
当我只选择类别时查询(在本例中,选择“IP地址”作为类别):

  SELECT dataid,
       firstname,
       lastname,
       data.name dataname,
       description,
       ip,
       TYPE,
       TIMESTAMP
FROM DATA
INNER JOIN USER ON DATA.userid=USER.userid
WHERE TYPE='IP-adress'
  AND DATA.name LIKE '%%'
  AND description LIKE '%%'
  AND ip LIKE '%%'
  AND TYPE LIKE '%%'
  AND firstname LIKE '%%'
  AND lastname LIKE '%%'
ORDER BY TIMESTAMP DESC

这将按我的要求返回包含所选类别的所有行。
在文本字段中键入内容时查询:
    SELECT dataid,
       firstname,
       lastname,
       data.name dataname,
       description,
       ip,
       TYPE,
       TIMESTAMP
FROM DATA
INNER JOIN USER ON DATA.userid=USER.userid
WHERE TYPE='IP-adress'
  AND DATA.name LIKE '%test%'
  AND description LIKE '%test%'
  AND ip LIKE '%test%'
  AND TYPE LIKE '%test%'
  AND firstname LIKE '%test%'
  AND lastname LIKE '%test%'
ORDER BY TIMESTAMP DESC

我有一些组合,其中有包含单词“test”的列作为我的输入,但是没有得到结果。
我已经做了很长一段时间了,我很确定我之前遇到了相反的问题,当我选择一个类别时,没有得到任何结果。
不管怎样,我希望另一双眼睛能帮到我。如果你需要更多的代码,只需要求它!

最佳答案

这是因为你已经使用了所有的条件。它将在所有域中搜索测试,如果一个域没有测试,则条件失败。
这边试试

SELECT dataid,
       firstname,
       lastname,
       data.name dataname,
       description,
       ip,
       TYPE,
       TIMESTAMP
FROM DATA
INNER JOIN USER ON DATA.userid=USER.userid
WHERE TYPE='IP-adress'
  AND (DATA.name LIKE '%test%'
  OR description LIKE '%test%'
  OR ip LIKE '%test%'
  OR TYPE LIKE '%test%'
  OR firstname LIKE '%test%'
  OR lastname LIKE '%test%')
ORDER BY TIMESTAMP DESC

关于mysql - MySQL SELECT“LIKE”参数无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19656700/

10-12 17:26