2013-10-10 29 views
0

我有一個電子郵件功能,看起來像:PHP循環中的電子郵件功能

function send_email_with_attachment($to, $from, $email_att, $subject, $body) 

我有2個表,這個功能從獲取數據可以發送電子郵件:

  1. 電子郵件
  2. email_attachments

電子郵件有欄:

  1. 序列
  2. emailto
  3. emailfrom
  4. 受試者
  5. 消息

和* email_attachmentss *具有列:

  1. 序列
  2. email_seq(與從郵件表序列)
  3. 附件

所以我希望能夠從電子郵件選擇一行表,然後選擇在* email_attachments *表中的所有相關行並將所有附件發送到一封電子郵件中

最好的方法是做什麼?

我平時做這樣的事情:

$sql="SELECT * from table1 where col = 'condition' "; 
$rs=mysql_query($sql,$conn); 
while($result=mysql_fetch_array($rs)) 
{ 
    $sql2="SELECT * from table2 where table1_col = '".$result["col"]."' "; 
    $rs2=mysql_query($sql2,$conn); 
    $result2=mysql_fetch_array($rs2); 
}.... 
+0

使用JOIN,這是從兩個表中獲取相關數據的常用方法。 – Barmar

+0

看到我的編輯 - 多數民衆贊成我通常如何鏈接表。我有時使用JOIN,但不是所有的時間 - 不知道如果我上面的方式更容易? – user2710234

+0

請注意,'mysql_xxx()'函數已被棄用且已過時。您應該考慮將代碼轉換爲使用PDO庫。 – Spudley

回答

1

書寫一個連接查詢,然後創建一個數組,並使用foreach循環。你的連接查詢應該是這樣的

"select e.email,e.sequence,e.emailto,e.emailfrom,e.subject,e.message,ea.email_seq, ea.attachment from email e join email_attachments ea on ea.email_seq = e.sequence; 
1

使用下面的外部聯接:

SELECT e.sequence, e.emailto, e.emailfrom, e.subject, e.message, a.attachment 
FROM emails e 
LEFT JOIN email_attachments a ON a.email_seq = e.sequence 
ORDER by e.sequence 

然後遍歷從這一行。當序列與前一行相同時,將附件推送到一個附件數組中(除非它是NULL,如果沒有與電子郵件相關的附件,則會發生這種情況)。