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

  显示原文与译文双语对照的内容

作为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>



时间:

我的猜测是你遇到问题,因为在循环之后你没有关闭你的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>



下面的代码很好。它是由一个名为 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>";


?> 



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

首先针对数据库直接运行查询。 确认它带来了结果。 即使这样简单,你也能发现你犯了一个错误,或者 table 是空的或者somesuch的奇怪。

如果 上面没问题,那么直接尝试循环并直接将 $row 内容回传到HTML中,看看你在mysql_query中返回了什么,看看它是否与你在数据库中直接获得的内容匹配。

如果将数据输出到页面上,那么看看你的HTML格式中出现了什么错误。

但是,如果没有从 $row 输出,那么就知道为什么mysql_query不能正常运行,用户是否具有查询数据库的权限用户是否有权限连接数据库,是否连接到数据库等等

将查询稍微改为


$sql = mysql_query("SELECT username FROM users") or die(mysql_error()); 



可能有助于 Highlight的任何错误: php手册


<select name="owner">


<?php 


$sql = mysql_query("SELECT username FROM users");


while ($row = mysql_fetch_array($sql)){


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


}


?>


</select>




<?php


 $query ="select username from users";


 $res = mysqli_query($connection, $query); 


?>



<form>


 <select>


 <?php


 while ($row = $res->fetch_assoc()) 


 {


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


 }


?>


 </select>


</form>



...