【问题标题】:HTML comments PHP out, but why?HTML 注释 PHP 出来了,但是为什么呢?
【发布时间】:2015-06-04 20:32:31
【问题描述】:

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

【问题讨论】:

  • 这很奇怪。您确定您的服务器正在运行 php,并且您确定您的文件具有 .php 文件扩展名吗?实际上我敢打赌你没有使用 .php 文件扩展名。
  • 但我在加载页面时得到的是: 请解释一下。你在哪里看到这个? while 也加载了吗?
  • &lt;? 更改为 HTML 注释 &lt;!--? 是不正常的行为。你使用任何框架吗,圣。除了“纯”PHP?
  • @treegarden:是的,服务器正在运行 php。因为 php 标签内的代码可以自行运行。那么,你是对的,我没有使用 .php 文件扩展名,但这个或 .html 都不起作用。
  • @Loko:如果我在 chrome 中检查网页上的元素(使用 Ctrl+Shift+i),我可以看到这一点。 while 也加载了是什么意思?

标签: php html mysql forms


【解决方案1】:

这是我的代码(start.html):

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

更新(跟进您对空 &lt;SELECT&gt; 元素的评论):

空的&lt;SELECT&gt; 元素意味着while() 循环不执行。

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

如果那里什么都没有,则启用错误报告和显示;将error_reporting(E_ALL);ini_set('display_errors', '1'); 放在脚本顶部。

在尝试从中获取行之前添加代码以检查查询结果 (if ($result != FALSE))。

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

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

【讨论】:

  • 谢谢,这让我更进一步。现在我只得到一个空的组合框。
  • 我更新了响应,提供了查找错误的基本说明。
  • 解决了这个问题。问了这个问题后,我在代码中添加了一个错字。现在它就像一个魅力。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
相关资源
最近更新 更多