0

例如,我在搜索 DAY、MONTH、YEAR 中有 3 个字段,用户必须单独选择它或一起选择

日/月

日/年

月/年

日/月

日月年

inputs: day month year
method: GET

select 必须在包含所有组合的任何列中搜索

桌子

     id  |     day  |   month  |   year
  ---------------------------------------
     1   |    10    |    jan   |   2013
     2   |    25    |    jun   |   2013
     3   |    02    |    jan   |   2015

SELECT * FROM mytable WHERE day = $day or month = $month or year = $year;

如果我的月份 = jan 应该返回 1 和 3

如果 my my day = 10 和 year = 2013 应该返回 1

等等

它不起作用......它只匹配一列

4

1 回答 1

0

您可能面临NULL价值观问题。这可能是你想要的:

SELECT *
FROM mytable
WHERE ($day is null or day = $day) and
      ($month is null or month = $month) and
      ($year is null oryear = $year);

这假设“缺失”值为NULL. 您可能有其他一些表示形式(比如一个空字符串),在这种情况下相应地更改逻辑。

于 2013-10-20T18:06:28.350 回答