【发布时间】:2016-07-28 19:43:41
【问题描述】:
我对下面的代码有疑问,它显示的是 html 部分,而不是我数据库中的数据。我只是想将数据库中的数据放在下拉列表中,然后单击find 将其显示在下表中。你能帮忙吗?
<?php
include 'config.php';
?>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<select name="manufacturer">
<option value="">----ALL----</option>
<?php
$sql = "SELECT id, manufacturer FROM coop";
$result = $conn->query($sql);
while ($r = mysqli_fetch_assoc($result))
{
echo "<option value='$r[id]'> $r[manufacturer]</option>";
}
?>
</select>
<input type="submit" name="find" value="find"/>
<br><br>
<table border="1">
<tr align="center">
<th>ID</th> <th>Manufacturer</th>
</tr>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$des=$_POST["manufacturer"];
if($des=="")
{
$result= mysqli_query("SELECT id, manufacturer FROM coop");
}
else
{
$result= mysqli_query($sql);
}
echo "<tr><td colspan='5'></td></tr>";
while($r= mysqli_fetch_assoc($result))
{
echo "<tr>";
echo "<td align='center'>$r[0]</td>";
echo "<td width='200'>$r[1]" . " $r[2]</td>";
echo "<td alig='center' width='40'> $r[3]</td>";
echo "<td align='center' width='200'>$r[4]</td>";
echo "<td width='100' align='center'>$r[5]</td>";
echo "</tr>";
}
}
?>
</table>
</body>
</html>
【问题讨论】:
-
在您的网络浏览器中,尽您所能查看页面的源代码。 PHP 在 Web 浏览器的源代码中是否可见?如果是,那就是问题所在。如果不是,下一步是查看错误日志。
-
您也只是假设查询成功。更不用说您的代码容易受到 SQL 注入的影响,而且由于您使用的是
mysqli_,因此您应该开始在涉及用户输入的情况下使用准备好的语句。 -
我没有看到显示表格和下拉列表的任何错误,这就是我能看到的全部
-
您的获取关联但有
$r[0].. 值属性的索引中应该是id,值属性的索引中应该是manufacturer。您也没有form,并且对 SQL 注入持开放态度。 -
谢谢!我已经根据您的所有建议对代码进行了一些操作,现在我在下拉列表中有数据库详细信息,但它没有在表中发布它:)