在mail()中通过$ message运行循环

时间:2011-09-27 18:58:56

标签: php

这是this question的后续内容。

我正在整理一封简单的HTML电子邮件,确认订单到我的数据库。由于每个订单显然是动态的,我需要$ message的一部分来运行循环。

例如,我在$ message之外查询我的数据库,最后以

结束
$emailinfo=mysql_fetch_assoc($result) or die(mysql_error()); 

我开始我的消息......

$message = <<<END
<html>
  <head>
    <title>Whatever</title>
  </head>
  <body>
    <p>{$emailinfo['itemname']}</p>
  </body>
</html>
END;

如果有人只订购了一件商品,那么上面的情况就不错了,但我需要做的是说明是否有人订购了多件商品,循环浏览每件商品并在$ message中回显。在$ message之外,我可以做到这一点(有效)

do {
echo $emailinfo['itemname'];
} 
while ($emailinfo=mysql_fetch_assoc($result));

但是当我在循环中包装我的$ message时,正如前一个问题的评论中所建议的那样,它仍然只回显第一行/顺序。 E.g。

do {
$message = <<<END
<html>
  <head>
    <title>Whatever</title>
  </head>
  <body>
    <p>{$emailinfo['itemname']}</p>
  </body>
</html>
END;
} 
while ($emailinfo=mysql_fetch_assoc($result));

有人可以帮忙吗?在$ message之外,循环,查询等工作正常,我只需要它在$ message内工作。它只是我需要循环的顺序的一部分。我不需要遍历客户信息,送货地址等,因为只有其中一个(如果有帮助的话)。

一如既往地谢谢

1 个答案:

答案 0 :(得分:1)

这里发生的是你在循环的每次迭代中覆盖$ message变量。

    $message = <<<END
<html>
  <head>
    <title>Whatever</title>
  </head>
  <body>
END;

do {
$message .= <<<END
    <p>{$emailinfo['itemname']}</p>
END;
} 
while ($emailinfo=mysql_fetch_assoc($result));

$message .= <<<END
  </body>
</html>
END;