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