2016-07-05 36 views
1

我有一個自定義php電子商務網站。發送郵件給未付訂單的用戶php

其中我有兩個表命名爲&用戶。

現在我需要發送電子郵件給其訂單狀態爲0

用戶ID存儲在用戶表的用戶。

這裏是我的PHP代碼:

<?php 
    $query = mysqli_query($link, "SELECT * FROM dg_order WHERE state=0"); 
    while ($row = mysqli_fetch_assoc($query)) { 
     $uid = $row['uid']; 
     $users = mysqli_query($link, "SELECT * FROM dg_users WHERE uid='$uid'"); 
     while ($rw = mysqli_fetch_assoc($users)) { 
      $em = $rw['email']; 

      mail($em, $subject, $message, $headers); 
     } 
    } 

但是,根據未支付訂單號發送電子郵件給一個用戶多次。我怎樣才能發送電子郵件給那些只有一次沒有付款的訂單,以及如何發送電子郵件中的未付訂單清單?

+0

首先,請參閱JOIN。如果您仍在努力,請考慮提供適當的CREATE和INSERT語句,以達到所需的結果。 – Strawberry

+0

請看看這裏http://stackoverflow.com/questions/5706437/whats-the-difference-between-inner-join-left-join-right-join-and-full-join?lq=1。關於加入表 – YVS1102

+0

僅供參考我知道加入但無法找到實現此目的的方法! –

回答

0

您可以修改使用INDISTINCT代碼爲

$users = mysqli_query($link, "SELECT email FROM dg_users WHERE uid IN(SELECT DISTINCT uid FROM dg_order WHERE state=0)"); 
while ($rw = mysqli_fetch_assoc($users)) { 
    $em = $rw['email']; 
    mail($em, $subject, $message, $headers); 
} 
+1

謝謝。完美的作品! –

+0

但潛在效率低下 – Strawberry

+0

Yep連接是最有效的然後IN查詢 – Saty

1

注意,這將只發送每個用戶一個郵件,不論它們可能有多少未完成的訂單有...

$query = " 
    SELECT DISTINCT u.email 
      FROM dg_order o 
      JOIN dg_users u 
       ON u.uid = o.uid 
      WHERE o.state = 0; 
      "; 

$result = mysqli_query($link,$query); 

    while($row = mysqli_fetch_assoc($result)) 
    { 
     $em = $row['email']; 
     mail($em, $subject, $message, $headers); 
    } 
+0

謝謝它的工作原理! –

相關問題