我试图填写一个选择输入与数据库的数据。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
包含查询要返回的一些数据。