PHP while 循环错误地显示 SQL 数据


php while loop displaying sql data incorrectly

好的,我有这个while循环,基本上是从SQL数据库中获取数据并将其放入下拉菜单中,问题是为每个值创建了一个单独的下拉列表。我只需要一个下拉列表即可显示所有值。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<?php
$conn = mysql_connect("localhost","root","")or die (mysql_error());
mysql_select_db("assignment_3", $conn);
$data = "select schoolName from schooltable";
$result = mysql_query($data, $conn) or die (mysql_error());
while ($row = mysql_fetch_assoc($result)) {
print "<select>";
print "<option value='' disabled='disabled' selected='selected'> Please Select your  Undergraduate School </option>";
print "<option value='1'>".$row['schoolName']."</option>";
print "</select>";
}
?>
</body>
</html>

您需要将 select 元素的 print 语句移到 while 循环之外:

print "<select>";
print "<option value='' disabled='disabled' selected='selected'> Please Select your  Undergraduate School </option>";
while ($row = mysql_fetch_assoc($result)) {
    print "<option>".$row['schoolName']."</option>";
}
print "</select>";

为了节省另一个问题,您需要放弃 value 属性,否则每个选项都将提交相同的值,因为它们都设置为 1 。尽管更好的选择可能是打印学校的ID:

$data = "select schoolId, schoolName from schooltable";
print '<option value="'.$row['schoolId'].'">'.$row['schoolName'].'</option>';

每次你再次循环时,你都会创建一个新的 html 元素。它应该是: 无标题文档

<body>
<?php
$conn = mysql_connect("localhost","root","")or die (mysql_error());
mysql_select_db("assignment_3", $conn);
$data = "select schoolName from schooltable";
$result = mysql_query($data, $conn) or die (mysql_error());
print "<select>";
while ($row = mysql_fetch_assoc($result)) {
print "<option value='' disabled='disabled' selected='selected'> Please Select your  Undergraduate School </option>";
print "<option value='1'>".$row['schoolName']."</option>";
}
print "</select>";
?>
</body>
</html>

这就是它的外观,也避免使用mysql_前缀的函数。要么使用 OOP 版本的mysqli_ MySQLi

$link = new mysqli( $host, $user, $password, $database ); // Connect to DB
$result = $link->query( "SELECT `schoolName` FROM `schoolTable`" );
echo "<select>";
echo "<option disabled="disabled" selected="selected">Please Select your undergraduate School</option>";
while ( $row = $result->fetch_assoc() ) {
    echo "<option>" . $row['schoolName'] . "</option>";
}
echo "</select>";