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

シングルクプテスとダブルクプテスがPHPとHTMLの間で混同されています。これを修正する最も簡単な方法は、ヒアドキュメント構文を使用することです。

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

コードには2つの異なるスタイルの引用符が混在しています。どちらもPHPで有効であり、どちらも追加のエスケープが必要です。

スタイルを選択し(一重引用符で囲むか二重引用符で囲む)、文字列内で同じタイプの引用符をエスケープするようにしてください。

于 2012-09-05T23:57:29.910 に答える
1

'一重引用符と二重引用符を混在させています""。たとえば、で行を開始し、行の終わりの"に再度使用する場合は、でエスケープする必要があります。私の提案は、1つのスタイルに固執し、それをすべてのラインに使用することです。たとえば、usign :\"""

  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 に答える