[英]Prevent duplicates within FOREACH loop/statement
我正在使用此代碼向我的relevent合作伙伴發送電子郵件,我遇到的問題是有時合作伙伴ID出現兩次,並向合作伙伴發送2封電子郵件(重復),如何防止這種情況發生?
$get_partner_id = "SELECT partner_id FROM partners_locations WHERE location_id ='$location_id'";
if ($partner_ids = $connect->query($get_partner_id)) {
foreach ($partner_ids as $partner_id) {
$partner_id = $partner_id['partner_id'];
//CONVERT PARTNER IDS TO RELATED PARTNER NAME AND SEND
$get_partner_names = "SELECT partner_name FROM partners WHERE partner_id ='$partner_id' AND active ='yes'";
if ($partner_names = $connect->query($get_partner_names)) {
foreach ($partner_names as $partner_name) {
$partner_name = $partner_name['partner_name'];
// GET ADMIN EMAIL TEMPLATE
ob_start();
include (TEMPLATEPATH . '/quote/admin-email-template.php');
$admin_message = ob_get_clean();
@mail("alerts@myremovalsquote.com", "Referral for " . $partner_name . "", $admin_message, $admin_headers);
}
}
else {
}
}
}
else {
}
首先,簡化代碼以僅使用單個查詢。 通常,在使用SQL時,您不需要在應用程序代碼中循環。 使用JOIN
:
SELECT p.partner_name
FROM partners_locations pl JOIN
partners p
ON p..partner_id = p.partner_id AND p.active ='yes'"
WHERE pl.location_id = '$location_id';
接下來,您可能遇到數據問題,以某種方式在數據中多次列出合作伙伴。 如果這些值應該唯一,則可能需要調查。 同時,您可以使用SELECT DISTINCT
:
SELECT DISTINCT p.partner_name
FROM partners_locations pl JOIN
partners p
ON p..partner_id = p.partner_id AND p.active ='yes'"
WHERE pl.location_id = '$location_id';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.