HTML注释了PHP,但是为什么呢?


HTML comments PHP out, but why?

我试图填写一个选择输入与数据库的数据。PHP代码本身可以工作,但是当我试图构建HTML表单时,它就崩溃了。

下面是我的代码(start.html):
[...]
<form action="action.php" method="post">
 <p>Schueler:</p>
 <select name="schueler">
 <?php
    $mysqli = new mysqli("localhost", "test", "test01", "Noten");
    $query = "SELECT id, vorname, nachname FROM schueler";
    $result = $mysqli->query($query);
        while($row = $result->fetch_assoc())
        {
            echo '<option value="' .htmlspecialchars($row['id']).'">' 
            .htmlspecialchars($row['vorname'])
            .' '.
            htmlspecialchars($row['nachname']).'</option>';
        }
 ?>
 </select>
[...]

但是我在加载页面时得到的结果是:

<form action="action.php" method="post">
 <p>Schueler:</p>
 <select name="schueler">
 <!--?php
    $mysqli = new mysqli("localhost", "test", "test01", "Noten");
    $query = "SELECT id, vorname, nachname FROM schueler";
    $result = $mysqli--->query($query);
        while($row = $result->fetch_assoc())
        {
            echo '<option value="' .htmlspecialchars($row['id']).'">' 
            .htmlspecialchars($row['vorname'])
            .' '.
            htmlspecialchars($row['nachname']).'</option>';
        }
?>"
 </select>
[...]

正如您所看到的,问题很可能是php命令在运行页面时被注释了。你能提供一些建议吗?

下面是我的代码(start.html):

将文件重命名为start.php,以便让服务器知道它需要由PHP解释器解析。

更新(跟进您关于空<SELECT>元素的评论):

空的<SELECT>元素表示不执行while()循环。

查看生成的源代码(在浏览器中命令View source),并查找可能的错误或警告消息,您期望其他内容(在<SELECT>元素中)。

如果没有,则启用错误报告和显示;把error_reporting(E_ALL);ini_set('display_errors', '1');放在脚本的顶部。

添加代码来检查查询结果(if ($result != FALSE)),然后尝试从中获取行。

也有可能连接失败。创建"$mysqli"后,检查"$mysqli->connect_errno"的值。如果不是0,则连接失败。你可以在$mysqli->connect_error中找到原因。

还要确保表schueler包含查询要返回的一些数据。