如何使用数据库中的值填充HTML下拉列表

Ber*_*ard 24 php sql while-loop

作为我正在创建的HTML表单的一部分,我希望有一个下拉列表,它将列出我的数据库中的所有用户名.

我认为下面的代码可以解决问题,但是下拉列表是空的 - 有人可以协助我做错了什么吗?谢谢.

<tr>
<td>Owner</td>
<td>
<select name="owner">
<?php 

$sql = mysqli_query($connection, "SELECT username FROM users");

while ($row = $sql->fetch_assoc()){

?>
<option value="owner1"><?php echo $row['username']; ?></option>

<?php
// close while loop 
}
?>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

Chr*_*son 31

我的猜测是你遇到问题,因为你没有在循环后关闭你的select-tag.这可以吗?

<select name="owner">
<?php 
$sql = mysqli_query($connection, "SELECT username FROM users");
while ($row = $sql->fetch_assoc()){
echo "<option value=\"owner1\">" . $row['username'] . "</option>";
}
?>
</select>
Run Code Online (Sandbox Code Playgroud)

  • 添加了一个示例来清理代码. (2认同)

Imo*_*mon 14

下面的代码很好..它是由在这个论坛中名为aaronbd的其他人给出的

<?php

$conn = new mysqli('localhost', 'username', 'password', 'database') 
or die ('Cannot connect to db');

    $result = $conn->query("select id, name from table");

    echo "<html>";
    echo "<body>";
    echo "<select name='id'>";

    while ($row = $result->fetch_assoc()) {

                  unset($id, $name);
                  $id = $row['id'];
                  $name = $row['name']; 
                  echo '<option value="'.$id.'">'.$name.'</option>';

}

    echo "</select>";
    echo "</body>";
    echo "</html>";
?> 
Run Code Online (Sandbox Code Playgroud)

  • @SmitSaraiya">"在选项中用作标准html语法. (4认同)

Kri*_*s C 6

我建议遵循几个调试步骤.

首先直接针对DB运行查询.确认它会带来结果.即使有这么简单的东西,你也会发现你犯了一个错误,或者桌子是空的,或者有些奇怪.

如果上面没问题,那么尝试循环并直接将$ row的内容回显到HTML中,看看你在mysql_query中找到了什么 - 看看它是否与你在DB中直接得到的相匹配.

如果您的数据输出到页面上,那么请查看HTML格式中出现的问题.

但是,如果没有输出$row,那么找出mysql_query无法正常工作的原因,例如用户是否有权查询该数据库,是否有开放的数据库连接,网络服务器是否可以连接到数据库等[这些行上的内容]往往是一个陷阱]

稍微更改您的查询

$sql = mysql_query("SELECT username FROM users") or die(mysql_error());  
Run Code Online (Sandbox Code Playgroud)

可能有助于突出显示任何错误:php手册