在通过mail()函数发送之前,在html电子邮件中执行php查询


Execute a php query in an html email before sending it by the mail() function

我想在邮件中发送一个php查询填充的项目列表…但我不知道如何设置我的语法让它工作…

 <php
    $message = '
    <html>
    <head>
        <title>Confirmation de demande de devis | Recapitulatif de la demande</title>
    </head>
    <body>
            <p>Hi '.$gender.' '.name.' blablabla</p>
            <ul>
            '.$req=$bdd->query("SELECT * FROM items WHERE id_order = $_POST['id-order']");
            while ($data = $req->fetch())
            {.'
                <li>'.echo $data['item-name'].'</li>
            .'}
            $req->closeCursor();
            .'</ul>
        </body>
    </html>';
?>

我总是有一个解析错误警报,所以我猜这不是正确的方法。你知道吗?谢谢你的帮助。

尝试将代码移出变量,如下所示:

$inline = '';
$req=$bdd->query("SELECT * FROM items WHERE id_order = $_POST['id-order']");
while ($data = $req->fetch()) {
    $inline .= '<li>'.$data['item-name'].'</li>';
}
$req->closeCursor(); 
$message = '
<html>
    <head>
        <title>Confirmation de demande de devis | Recapitulatif de la demande</title>
    </head>
    <body>
        <p>Hi '.$gender.' '.name.' blablabla</p>
        <ul>'.$inline.'</ul>
    </body>
</html>';

'foo'. (SOME PHP CODE) .'bar'不工作。你需要把你想要做的事从你的字符串中分离出来。

$message = '<html><head>etc..';
$req = $bdd->query("SELECT * FROM items WHERE id_order = ".intval($_POST['id-order']));
// added intval against sql injections
while ($data = $req->fetch())
{
    $message .= '<li>'.$data['item-name'].'</li>';
}
$message .= 'rest';