如何从 SQL 数据库动态填充下拉选择框(Dropdown)

本文详解如何使用 php + mysql 正确读取数据库字段并生成带有可见文本的 html 下拉菜单,重点解决选项值(value)有内容但下拉项显示为空的常见错误。

在 Web 开发中,通过 PHP 从数据库动态生成

HTML 规范明确规定:

  • value 属性用于表单提交时传递的值(对用户不可见);
  • 用户实际看到的选项文字,必须写在

✅ 正确写法如下(修正关键行):

connect_error) {
    die('数据库连接失败: ' . $conn->connect_error);
}

$result = $conn->query("SELECT city FROM Hostel");
if (!$result) {
    die('查询失败: ' . $conn->error);
}

echo "

城市<img src="//public-space.oss-cn-hongkong.aliyucs.com/gz/224.jpg" />选择



";

$conn->close();
?>

? 关键改进说明:

  • "; —— 同时赋予 value 和显示文本;
  • ✅ 使用 name='city' 替代无效的 city='city',确保表单提交时能通过 $_POST['city'] 获取选中值;
  • ✅ 添加 htmlspecialchars() 对输出内容进行转义,防止 HTML 注入或破坏标签结构;
  • ✅ 增加数据库连接与查询错误处理,提升代码健壮性;
  • ✅ 补全标准 HTML5 文档结构(、 等),确保浏览器渲染兼容性。

? 小贴士:

  • 若需默认选中某一项,可在对应
  • 生产环境建议使用 PDO 或预处理语句替代直连查询,以增强安全性与可维护性;
  • 下拉菜单应置于
    标签内,并设置 method="post" 才能正常提交数据。

掌握这一细节,即可确保下拉框既“能传值”又“看得见”,为后续表单交互打下坚实基础。