HTML评论PHP,但为什么?

时间:2015-06-04 09:44:24

标签: php html mysql forms

我正在尝试使用数据库中的数据填充选择输入。 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命令。你能帮忙或提供一些想法吗?

1 个答案:

答案 0 :(得分:4)

  

继承我的代码( 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包含查询返回的一些数据。