循环不工作时在php变量中设置电子邮件正文

循环不工作时在php变量中设置电子邮件正文,php,Php,所以我试图通过电子邮件发送订单确认。为此,我需要将body附加为$body变量 因此,我所有的html代码都在$body中。这部分工作得很好,它成功地发送电子邮件 但是,我需要循环出曾经订购过什么,以便客户知道他们订购了什么以及他们为每个项目支付了什么 下面是SQL查询 // GET THE PRODUCTS THAT HAVE BEEN ORDERED $w="SELECT nfw_order_new_items.name, nfw_order_new_items.qty, nfw_order

所以我试图通过电子邮件发送订单确认。为此,我需要将body附加为$body变量

因此,我所有的html代码都在$body中。这部分工作得很好,它成功地发送电子邮件

但是,我需要循环出曾经订购过什么,以便客户知道他们订购了什么以及他们为每个项目支付了什么

下面是SQL查询

// GET THE PRODUCTS THAT HAVE BEEN ORDERED
$w="SELECT
nfw_order_new_items.name,
nfw_order_new_items.qty,
nfw_order_new_items.price
FROM
nfw_order_new_items
WHERE
nfw_order_new_items.id_order = '$order_ID'";
$ww= mysql_query("$w") or die("Inv Rows ".mysql_error());
然后以主体为例,在主体中包含我的html。$name、$qty和$price是我希望循环根据结果中的行数创建表行的位置。我试着把环放在身体外面,就像下面这样,但也不起作用。见下文:

while(list($name,$qty,$price)= mysql_fetch_row($ww)){
$body = "<table width=\"80%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
          <tr style=\"font-size:12px; font-weight:bold; color:#FFF\">
            <td width=\"111\" bgcolor=\"#333333\" style=\"padding-left:5px;\">Product Name:</td>
            <td width=\"290\" bgcolor=\"#333333\">QTY:</td>
            <td width=\"67\" align=\"center\" bgcolor=\"#333333\">Price Each</td>
            <td width=\"121\" align=\"right\" bgcolor=\"#333333\" style=\"padding-right:5px; font-size:12px;  text-align:right;\">Total Price</td>
          </tr>
          <tr>
            <td style=\"padding-left:5px; font-size:12px;\">$name</td>
            <td style=\"padding-left:0px; font-size:12px;\">$qty</td>
            <td style=\"padding-left:0px; font-size:12px; text-align:center;\">$price</td>
          </tr>
        </table>"; }
试试这个代码

$body = "<table width=\"80%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr style=\"font-size:12px; font-weight:bold; color:#FFF\">
            <td width=\"111\" bgcolor=\"#333333\" style=\"padding-left:5px;\">Product Name:</td>
            <td width=\"290\" bgcolor=\"#333333\">QTY:</td>
            <td width=\"67\" align=\"center\" bgcolor=\"#333333\">Price Each</td>
            <td width=\"121\" align=\"right\" bgcolor=\"#333333\" style=\"padding-right:5px; font-size:12px;  text-align:right;\">Total Price</td>
          </tr>";
while(list($name,$qty,$price)= mysql_fetch_row($ww)){
$body .= "<tr>
            <td style=\"padding-left:5px; font-size:12px;\">$name</td>
            <td style=\"padding-left:0px; font-size:12px;\">$qty</td>
            <td style=\"padding-left:0px; font-size:12px; text-align:center;\">$price</td>
          </tr>
        "; }
$body.="</table>";

您不需要每次都打印表格标题 你可以像下面这样做

$body = "<table width=\"80%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
          <tr style=\"font-size:12px; font-weight:bold; color:#FFF\">
            <td width=\"111\" bgcolor=\"#333333\" style=\"padding-left:5px;\">Product Name:</td>
            <td width=\"290\" bgcolor=\"#333333\">QTY:</td>
            <td width=\"67\" align=\"center\" bgcolor=\"#333333\">Price Each</td>
            <td width=\"121\" align=\"right\" bgcolor=\"#333333\" style=\"padding-right:5px; font-size:12px;  text-align:right;\">Total Price</td>
          </tr>";

while(list($name,$qty,$price)= mysql_fetch_row($ww))
{
    $body .= "<tr>
            <td style=\"padding-left:5px; font-size:12px;\">$name</td>
            <td style=\"padding-left:0px; font-size:12px;\">$qty</td>
            <td style=\"padding-left:0px; font-size:12px; text-align:center;\">$price</td>
          </tr>";
}

$body .= "</table>";

为什么要使用PHP进行如此多的回显?您有其他解决方案吗?您这样做的方式是错误的,首先您不必在变量中存储大量文本,其次学习如何使用phpWow不回显过多的标记,感谢您提出的否定问题,绝对没有任何帮助。你没有义务帮助别人,我也不希望得到帮助。我很感激能抽出时间帮助别人和我自己学习。每个人都从某个地方开始。我确实做了我的研究,但我不知道我可以关闭它,然后再继续。但我现在知道了,这要感谢下面的人。如果你将来不想帮上忙的话,甚至懒得回答。最重要的是,不要因为你觉得某个问题很愚蠢而给它打坏分数。我几乎不反对投票,检查我的个人资料,看看下降投票率和上升投票率是多少,然后说出为什么要在循环中一次又一次地打印列名。感谢Praveen花时间回复。你的代码确实有效:但是我同意Veerendra的答案。谢谢你。非常感谢你抽出时间来帮忙。我现在知道我可以关闭然后继续。我不知道我能做到这一点:谢谢你。@Elgoots总是在这里帮忙: