MySQL PHPMailer 电子邮件正文中的结果

MySQL Results in Body of PHPMailer Email

我试图将 MySQL 查询的结果回显到电子邮件正文中以通过 PHPMailer 发送,但我遇到了困难。当我在页面上成功创建 table 时查询有效,但似乎无法将 table 分配给正确的变量。

我的代码:

$body = '<html>
                    <body>
                        <table>
                            <thead>
                                <tr>
                                    <th>Food</th>
                                    <th>Quantity</th>
                                    <th>Category</th>
                                <tr>
                            </thead>
                            <tbody>'.
                            while($row = $resultOrderE->fetch(PDO::FETCH_ASSOC)){
                                echo '
                                        <tr>
                                            <td>$row['food']</td>
                                            <td>$row['quantity']</td>
                                            <td>$row['category']</td>
                                        </tr>
                                ';}.'
                            </tbody>
                        </table>
                    </body>
                </html>';

我得到的错误是:

PHP Parse error:  syntax error, unexpected 'while' (T_WHILE)

有什么建议吗?谢谢!

您不能将 WHILE 循环连接到字符串。

您必须在循环的每次迭代中遍历并添加到现有字符串

$html_string = '<html><body><table><thead><tr><th>Food</th><th>Quantity</th> <th>Category</th><tr></thead><tbody>';

while($row = $resultOrderE->fetch(PDO::FETCH_ASSOC)){
  $html_string .= 
  '<tr><td>'.$row['food'].'</td><td>'.$row['quantity'].'</td><td>'.$row['category'].'</td></tr>';
}

// this will add the closing tags and now html_string has your built email
$html_string .= '</tbody></table></body></html>';

所以 .= 是重要的部分,它将一个字符串连接到现有字符串的末尾