выбрать строку из одной таблицы, где существует значение из массива из другой таблицы

0

У меня две таблицы.

  1. Users table имеет столбцы

    • member_group равно
      • Администратор
      • маркетинг
      • Продажи
    • zone равна
      • к северу
      • запад
      • восток
  2. Meetings table содержит столбцы

    • for_member_group
    • for_zone.

for_member_group и for_zone могут содержать несколько значений с разделением запятой.

Например

  • for_member_group= Admin, Продажи
  • for_member_group= Admin, маркетинг, продажи

    И то же самое с колонкой for_zone.

Теперь я хочу отправить электронные письма на эту конкретную встречу.

Например, из таблицы 3 собраний со значениями, такими как for_member_group= 'Admin, Marketing' и for_zone= 'East, West'

Теперь почта должна быть отправлена на имя администратора и маркетинга, содержащее строки, а имена зон зоны Восток и Запад - только в форме Users Table

НО ВОПРОС ПОЛЬЗОВАТЕЛЯ не работает.... Пользователь не выбрал пользователя и не отправляется электронное письмо...

Я также попробовал echo $userdata['email']; Но ничего не повторилось... и No Error не видно...

Я пробовал:

<?php
    $qry = "select * from $meetings where meeting_start > $today order by meeting_start desc limit 1";
    $results = $database->get_results($qry);
    foreach($results as $lecture_data){
        $for_member_group = $lecture_data['for_member_group'];
        $for_zone = $lecture_data['for_zone'];
        $userquery = "select * from $users where member_group IN('$for_member_group') and zone IN('$for_zone') ";
        $userresult = $database->get_results($userquery);
        foreach ($userresult as $userdata){
            echo $userdata['email'];
            ob_start();
   ?>

   <!-- EMail HTML and PHP Coding-->


 <?php

  rest php code
     }
 }
 ?>
  • 1
    В чем ваша ошибка?
  • 0
    @ErwannBestard Электронная почта не отправляется ...
Показать ещё 4 комментария
Теги:
arrays

3 ответа

0
Лучший ответ

$for_member_group кажется CSV-строкой. Вы должны процитировать все элементы для использования в инструкции IN(). Обратите внимание, что перед тем, как использовать их, вы должны проверить, нет ли $for_member_group и $for_zone.

$mem_quote = "'".implode("','", explode(',', $for_member_group))."'";
$zon_quote = "'".implode("','", explode(',', $for_zone))."'";
// $mem_quote will be equals to 'Admin','Marketing'
$userquery = "select * from $users 
              where member_group in($mem_quote) 
                and zone in($zon_quote)";

Запрос будет выглядеть так:

select * from $users 
 where member_group in('Admin','Marketing') 
   and zone in('East','West')
  • 0
    thnx и попытался ... но с синтаксической ошибкой, неожиданным '$ for_member_group' (T_VARIABLE) в
  • 0
    @DrMJ Извините, я пропустил запятую. Пожалуйста, посмотрите на обновленный ответ.
Показать ещё 1 комментарий
0

Я думаю, вы должны использовать FIND_IN_SET()

Как и ниже:

$userquery = "select * from $users where (FIND_IN_SET('Admin',member_group) OR FIND_IN_SET('Sales',member_group) ) and (FIND_IN_SET('North',zone) OR FIND_IN_SET('West',zone))";
  • 0
    Пожалуйста, добавьте больше условия с условием ИЛИ, если у нас есть больше значений member_group
  • 0
    Это невозможно, поскольку таблица собраний может содержать различные строки с различными значениями для столбца for_member_row, а имена пользователей member_group могут увеличиться в ближайшие дни ... Так что IN идеально подходит для меня ... Но, к сожалению, это не работает ...
0

Я получал ту же ошибку, пожалуйста, попробуйте этот запрос.

$userquery = "select * from $users where member_group IN(".$for_member_group.") and zone IN (".$for_zone.") ";
  • 0
    Я пробовал это, но пока безрезультатно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню