簡體   English   中英

防止在FOREACH循環/語句中重復

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM