0

次のようなメール機能があります。

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

この関数がメールを送信するためにデータを取得するテーブルが 2 つあります。

  1. メール
  2. email_attachments

メールには次の列があります。

  1. 順序
  2. メールアドレス
  3. からのメール
  4. 主題
  5. メッセージ

*email_attachmentss* には次の列があります。

  1. 順序
  2. email_seq (email テーブルのシーケンスと一致)
  3. 添付ファイル

だから私は電子メールテーブルから行を選択し、*email_attachments* テーブルで関連するすべての行を選択し、すべての添付ファイルを 1 つの電子メールで送信できるようにしたい

これを行う最良の方法は何ですか?

私は通常、次のようなことを行います。

$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);
}....
4

2 に答える 2

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 の場合を除きます)。

于 2013-10-10T08:58:19.237 に答える
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;
于 2013-10-10T08:55:47.543 に答える