SELECT QUERY结构

I have a query I am hoping to shorten.

SELECT date1, date2, date3, date4, date5, date6, date7 FROM dates_db 
WHERE date1 =('$date1') OR date1 =('$date2') OR date1=('$date3') 
OR date1=('$date4') OR date1=('$date5') OR date1=('$date6') 
OR date1=('$date7') OR date2 =('$date1') OR date2 =('$date2') 
OR date2=('$date3') OR date2=('$date4') OR date2=('$date5')
OR date2=('$date6') OR date2=('$date7') OR date3 =('$date1') 
OR date3 =('$date2')OR date3=('$date3') OR date3=('$date4') 
OR date3=('$date5') OR date3=('$date6') OR date3=('$date7')

and so on for date 1-7 .

This query is massive, is there any way of shortening it. This is for a calender type design where it is looking for data entries that are in different days. So if a date matches then it will post it to the calendar.

You can use the IN predicate instead of these OR's like so:

SELECT date1, date2, date3, date4, date5, date6, date7
FROM dates_db 
WHERE date1 IN ('$date1','$date2','$date3','$date4','$date5','$date6','$date7')
  OR  date2 IN ('$date1','$date2','$date3','$date4','$date5','$date6','$date7')
  OR  date3 IN ('$date1','$date2','$date3','$date4','$date5','$date6','$date7')
  ...

maybe you will use IN

SELECT...
FROM...
WHERE   date1 IN ('$date1','$date2','$date3','$date4','$date5','$date6','$date7') OR
        date2 IN ('$date1','$date2','$date3','$date4','$date5','$date6','$date7') OR
        date3 IN ('$date1','$date2','$date3','$date4','$date5','$date6','$date7') 

Try this,

 SELECT date1, date2, date3, date4, date5, date6, date7 FROM dates_db 
 WHERE date1 IN ('$date1','$date2',...) OR date2 IN('$date1','$date2',...)....

Or,

$dates = $date1.",".$date2.",".$date3.",".........;
 SELECT date1, date2, date3, date4, date5, date6, date7 FROM dates_db 
 WHERE date1 IN ('$dates') OR date2 IN('$dates').....

Here is an option that involves only listing the $date variables once. Some modification may be needed for MySQL syntax:

WITH search_dates (date) as (
     values ('$date1'),('$date2'),...
)
SELECT DISTINCT date1, date2, date3, date4, date5, date6, date7 FROM dates_db 
    INNER JOIN search_dates ON 
        date1 = date OR
        date2 = date OR ...
        date7 = date;

In an ideal world, your dates_db table would also be structured differently, so that each row only contains one date.