PHP无法将查询结果分配给变量

时间:2019-05-15 15:55:58

标签: php

我正在尝试使用Sendgrid发送一封电子邮件,其中显示了数据库中的信息。

我的代码:


$email->addContent(
    "text/html", "
<?php foreach ($dueinsevendays as $dueinsevenday) :

$sevendaycomref = $dueinsevenday['ceref'];
$sevendaytitle = $dueinsevenday['cetitle'];
$sevendaydate = $dueinsevenday['targetresponse'];
$sevendaystage = $dueinsevenday['cestage'];

?>
<tr>        
      <td style='border: 1px solid black;'>$sevendaycomref</td>
      <td style='border: 1px solid black;'>$sevendaytitle</td>
      <td style='border: 1px solid black;'>$sevendaydate</td>
      <td style='border: 1px solid black;'>$sevendaystage</td>   
</tr>
<?php endforeach; ?>
")

我在将查询结果分配给变量时遇到错误,例如它说“ $ dueinsevenday ['ceref'];”,第一个[显示为错误(语法错误,意外的带引号的字符串和空白)。 / p>

我需要为查询返回的数据库中的每条记录创建一个表行,如果我在此php代码之外分配变量,则没有错误,但循环不起作用,此代码将仅显示一个表格行而不是全部,例如:


$sevendaycomref = $dueinsevenday['ceref'];
$sevendaytitle = $dueinsevenday['cetitle'];
$sevendaydate = $dueinsevenday['targetresponse'];
$sevendaystage = $dueinsevenday['cestage'];

$email->addContent(
    "text/html", "
<?php foreach ($dueinsevendays as $dueinsevenday) :


?>
<tr>        
      <td style='border: 1px solid black;'>$sevendaycomref</td>
      <td style='border: 1px solid black;'>$sevendaytitle</td>
      <td style='border: 1px solid black;'>$sevendaydate</td>
      <td style='border: 1px solid black;'>$sevendaystage</td>   
</tr>
<?php endforeach; ?>
")

任何有关解决错误或重新排列代码的想法都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

您似乎正在将PHP代码放置在字符串变量中,并希望将其作为代码执行。不会,它将被视为电子邮件的预期内容。您需要首先处理数据,将必要的HTML添加到字符串变量中,然后将该字符串(即代码的结果而不是代码本身)添加到电子邮件中。

像这样尝试:

$html = "";
foreach ($dueinsevendays as $dueinsevenday)
{
  $html .= "<tr>        
      <td style='border: 1px solid black;'>$sevendaycomref</td>
      <td style='border: 1px solid black;'>$dueinsevenday['cetitle']</td>
      <td style='border: 1px solid black;'>$dueinsevenday['targetresponse']</td>
      <td style='border: 1px solid black;'>$dueinsevenday['cestage']</td>   
    </tr>";
} 
$email->addContent("text/html", $html);