Intereting Posts
PHP: переименуйте все файлы в нижний регистр в каталог рекурсивно CakePHP: Как я буду маршрутизировать все отсутствующие вызовы контроллера / действия на одну общую страницу ошибок? Идентификатор сеанса загрузки файла JQuery jQuery Загрузка файлов, получение и редактирование данных, которые сохраняются в DB PHP: проверьте, существуют ли значение и ключ в многомерном массиве Создание таблицы из PHP не выполняется Doctrine2 с идентификатором varchar не вставляет идентификатор в базу данных Запустите php foreach loop на многомерном массиве Избегание ошибок при попытке загрузить недоступный файл Подтвердить URL для многоязычия – японский langauga Надежное обнаружение браузера с помощью javascript? загрузить pdf, csv и другой тип файла в codeigniter PHP Вызов self по нестационарному методу Получение цены от Amazon с помощью Xpath Woocommerce обновляет методы доставки при оформлении заказа через ajax

MySQL «Или» Условие

Проверьте этот MySQL запрос, а затем я покажу вам, что я действительно хочу сделать …

 mysql_query(" SELECT * FROM Drinks WHERE email='$Email' AND date='$Date_Today' OR date='$Date_Yesterday' OR date='$Date_TwoDaysAgo' OR date='$Date_ThreeDaysAgo' OR date='$Date_FourDaysAgo' OR date='$Date_FiveDaysAgo' OR date='$Date_SixDaysAgo' OR date='$Date_SevenDaysAgo'"); - mysql_query(" SELECT * FROM Drinks WHERE email='$Email' AND date='$Date_Today' OR date='$Date_Yesterday' OR date='$Date_TwoDaysAgo' OR date='$Date_ThreeDaysAgo' OR date='$Date_FourDaysAgo' OR date='$Date_FiveDaysAgo' OR date='$Date_SixDaysAgo' OR date='$Date_SevenDaysAgo'"); 

Проблема в том, что я хочу, чтобы он всегда соответствовал электронной почте. В этом случае (например), если дата равна $Date_SixDaysAgo тогда она будет выбрана из запроса, даже если $Email не соответствует столбцу электронной почты.

Короче говоря, я хочу, чтобы письмо всегда было равно столбцу электронной почты, и если запрос вытягивает дату, $Daye_TwoDaysAgo или $Date_ThreeDaysAgo т. Д., Но не соответствует электронной почте, тогда не тяните ее.

Я предполагаю, что мой запрос будет выглядеть примерно так, но я уверен, что это не сработает.

 mysql_query(" SELECT * FROM Drinks WHERE email='$Email' AND date='$Date_Today || $Date_Yesterday || $Date_TwoDaysAgo || $Date_ThreeDaysAgo || $Date_FourDaysAgo || $Date_FiveDaysAgo || $Date_SixDaysAgo || $Date_SevenDaysAgo'"); - mysql_query(" SELECT * FROM Drinks WHERE email='$Email' AND date='$Date_Today || $Date_Yesterday || $Date_TwoDaysAgo || $Date_ThreeDaysAgo || $Date_FourDaysAgo || $Date_FiveDaysAgo || $Date_SixDaysAgo || $Date_SevenDaysAgo'"); 

Используйте скобки для группировки операторов OR.

 mysql_query("SELECT * FROM Drinks WHERE email='$Email' AND (date='$Date_Today' OR date='$Date_Yesterday' OR date='$Date_TwoDaysAgo' OR date='$Date_ThreeDaysAgo' OR date='$Date_FourDaysAgo' OR date='$Date_FiveDaysAgo' OR date='$Date_SixDaysAgo' OR date='$Date_SevenDaysAgo')"); 

Вы также можете использовать IN

 mysql_query("SELECT * FROM Drinks WHERE email='$Email' AND date IN ('$Date_Today','$Date_Yesterday','$Date_TwoDaysAgo','$Date_ThreeDaysAgo','$Date_FourDaysAgo','$Date_FiveDaysAgo','$Date_SixDaysAgo','$Date_SevenDaysAgo')"); 

Использовать скобки:

 mysql_query("SELECT * FROM Drinks WHERE email='$Email' AND (date='$Date_Today' OR date='$Date_Yesterday' OR date='$Date_TwoDaysAgo' OR date='$Date_ThreeDaysAgo' OR date='$Date_FourDaysAgo' OR date='$Date_FiveDaysAgo' OR date='$Date_SixDaysAgo' OR date='$Date_SevenDaysAgo' ) "); 

Но вы должны alsos взглянуть на оператора IN . Таким образом, вы можете сказать, что suate IN ('$ date1', '$ date2', …) `

Но если у вас всегда есть несколько последовательных дней, почему бы вам не сделать следующее для части даты

 date <= $Date_Today AND date >= $Date_SevenDaysAgo 

Ваш вопрос касается приоритетов операторов в mysql, и Алекс показал вам, как «переопределить» приоритет с помощью круглых скобок.

Но на стороне примечания, если ваша date столбца имеет тип Date вы можете использовать функции даты и времени MySQL для извлечения записей за последние семь дней, например, например,

 SELECT * FROM Drinks WHERE email='$Email' AND date >= Now()-Interval 7 day - SELECT * FROM Drinks WHERE email='$Email' AND date >= Now()-Interval 7 day 

(или, может быть, Curdate () вместо Now ())

Оберните логику AND в круглые скобки, например:

 mysql_query("SELECT * FROM Drinks WHERE email='$Email' AND (date='$Date_Today' OR date='$Date_Yesterday' OR date='$Date_TwoDaysAgo' OR date='$Date_ThreeDaysAgo' OR date='$Date_FourDaysAgo' OR date='$Date_FiveDaysAgo' OR date='$Date_SixDaysAgo' OR date='$Date_SevenDaysAgo')"); 

попробуй это

 mysql_query(" SELECT * FROM Drinks WHERE email='$Email' AND date='$Date_Today' OR date='$Date_Yesterday', '$Date_TwoDaysAgo', '$Date_ThreeDaysAgo', '$Date_FourDaysAgo', '$Date_FiveDaysAgo', '$Date_SixDaysAgo', '$Date_SevenDaysAgo'" ); - mysql_query(" SELECT * FROM Drinks WHERE email='$Email' AND date='$Date_Today' OR date='$Date_Yesterday', '$Date_TwoDaysAgo', '$Date_ThreeDaysAgo', '$Date_FourDaysAgo', '$Date_FiveDaysAgo', '$Date_SixDaysAgo', '$Date_SevenDaysAgo'" ); 

я буду таким

  OR date='$Date_Yesterday' oR '$Date_TwoDaysAgo'.........