【问题标题】:PHP loop in an email function电子邮件函数中的 PHP 循环
【发布时间】:2013-10-17 22:41:06
【问题描述】:

我有一个电子邮件功能,如下所示:

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

我有 2 个表,此函数可以从中获取数据以发送电子邮件:

  1. 电子邮件
  2. email_attachments

电子邮件 有以下栏目:

  1. 序列
  2. 发邮件给
  3. 电子邮件发件人
  4. 主题
  5. 留言

并且 *email_attachments* 有以下列:

  1. 序列
  2. email_seq(匹配 emails 表中的序列)
  3. 附件

所以我希望能够从 emails 表中选择一行,然后选择 *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);
}....

【问题讨论】:

  • 使用JOIN,这是从两个表中获取相关数据的正常方式。
  • 查看我的编辑 - 这就是我通常链接表格的方式。我有时但不是一直使用 JOIN - 不确定我上面的方法是否更容易?
  • 请注意mysql_xxx() 函数已被弃用和过时。您应该考虑将代码转换为使用 PDO 库。

标签: php mysql sql email


【解决方案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;

【讨论】:

    【解决方案2】:

    使用以下外连接:

    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,如果没有与电子邮件关联的附件,则会发生这种情况)。

    【讨论】:

      猜你喜欢
      • 2012-08-09
      • 2011-02-08
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多