3

我正在尝试从 sql 表中查询和选择数据,然后在 html 中显示它。这是我的代码。

$result = mysqli_query($dbhandle, $query)
    or die(mysql_error().'<br>SQL:'.$query);
echo '<table style ="border:1px solid black;">';

while($row = mysqli_fetch_array($result)) {
    echo '<tr>';
    echo '<td style="border:1px solid black;">{$row['first_name']}</td>';
    echo '<td style="border:1px solid black;">{$row['last_name']}</td>';
    echo '<td style="border:1px solid black;">{$row['grade']}</td>';
    echo '<td style="border:1px solid black;">{$row['gpaP']}</td>';
    echo "<td style="border:1px solid black;">{$row['AGP']}</td>";
    echo "<td style="border:1px solid black;">{$row['awardP']}</td>";
    echo "<td style="border:1px solid black;">{$row['awardTP']}</td>";
    echo "<td style="border:1px solid black;">{$row['rigorP']}</td>";
    echo "<td style="border:1px solid black;">{$row['APP']}</td>";
    echo "<td style="border:1px solid black;">{$row['positionP']}</td>";
    echo "<td style="border:1px solid black;">{$row['hoursP']}</td>";
    echo "<td style="border:1px solid black;">{$row['selectionP']}</td>";
    echo "<td style="border:1px solid black;">{$row['activityTypeP']}</td>";
    echo "<td style="border:1px solid black;">{$row['activityYearsP']}</td>";
    echo "<td style="border:1px solid black;">{$row['date']}</td>";
    echo "<td style="border:1px solid black;">{$row['IP']}</td>";
    echo '</tr>';
}
echo '</table>';

它给了我一个错误,说 last_name 单元格中有一个意外的字符串。如果我从单元格中删除样式参数,它将起作用。有人指出我的错误吗?

4

3 回答 3

3

您的单双 quptes 在 PHP 和 HTML 之间混为一谈。修复它的最简单方法是使用 heredoc 语法:

echo <<<EOT
<tr>
<td style="border:1px solid black;">{$row['first_name']}</td>
<td style="border:1px solid black;">{$row['last_name']}</td>
<td style="border:1px solid black;">{$row['grade']}</td>
<td style="border:1px solid black;">{$row['gpaP']}</td>
<td style="border:1px solid black;">{$row['AGP']}</td>
<td style="border:1px solid black;">{$row['awardP']}</td>
<td style="border:1px solid black;">{$row['awardTP']}</td>
<td style="border:1px solid black;">{$row['rigorP']}</td>
<td style="border:1px solid black;">{$row['APP']}</td>
<td style="border:1px solid black;">{$row['positionP']}</td>
<td style="border:1px solid black;">{$row['hoursP']}</td>
<td style="border:1px solid black;">{$row['selectionP']}</td>
<td style="border:1px solid black;">{$row['activityTypeP']}</td>
<td style="border:1px solid black;">{$row['activityYearsP']}</td>
<td style="border:1px solid black;">{$row['date']}</td>
<td style="border:1px solid black;">{$row['IP']}</td>
</tr>
EOT;

这种语法使它更容易,因为您可以同时使用单引号和双引号而不转义它们,并且将评估变量。此外,在您的原始代码中,不会对变量进行评估,因为它们位于单引号中。

于 2012-09-05T23:59:47.270 回答
2

您的代码混合了两种不同样式的引号,它们在 PHP 中都是有效的,并且都需要一些额外的转义。

您应该选择一种样式(用单引号括起来或用双引号括起来),然后确保在字符串中转义相同类型的引号。

于 2012-09-05T23:57:29.910 回答
1

您将单引号'与双引号混合在一起""。例如,如果您以 开始行,"然后在行尾之前再次使用它,则需要用 . 转义它\"。我的建议是让你坚持一种风格,并将其用于所有线条。例如,使用""

  echo "<td style=\"border:1px solid black;\">{$row['first_name']}</td>";
  echo "<td style=\"border:1px solid black;\">{$row['IP']}</td>";
于 2012-09-05T23:55:28.937 回答