У меня две таблицы.
Users table
имеет столбцы
member_group
равно zone
равна 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
}
}
?>
$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')
Я думаю, вы должны использовать 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))";
Я получал ту же ошибку, пожалуйста, попробуйте этот запрос.
$userquery = "select * from $users where member_group IN(".$for_member_group.") and zone IN (".$for_zone.") ";