我有两张桌子。
Users table
有专栏
member_group
等于
zone
等于
Meetings table
有专栏
for_member_group
for_zone
列。 for_member_group
和for_zone
可能包含逗号分隔的多个值。
例如
for_member_group
=管理员,销售 for_member_group
=管理员,营销,销售
与for_zone
列相同。
现在我想向该特定会议发送电子邮件。
例如来自会议表第3行,其值为for_member_group
='管理员,营销'和for_zone
='东,西'
现在邮件应该发送到包含行的管理和营销名称以及仅包含区域名称的东西方名称 Users Table
但用户查询无法正常工作.... 未选择任何用户且未收到任何电子邮件...
我也试过echo $userdata['email'];
但没有回应......并且没有看到错误......
我尝试过如下:
<?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
}
}
?>
答案 0 :(得分:0)
我收到同样的错误,请尝试此查询。
$userquery = "select * from $users where member_group IN(".$for_member_group.") and zone IN (".$for_zone.") ";
答案 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))";
答案 2 :(得分: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')