如何基于数组值生成Select下拉选项?代码显示为空求助
解决PHP生成Select下拉框为空的问题
我看了你的代码,下拉框为空主要有两个关键问题,咱们一步步来修复:
1. 错误的HTML嵌套(最直接原因)
你在<option>标签里嵌套了<p>标签,这不符合HTML规范——<option>只能包含纯文本内容,嵌套块级元素会被浏览器忽略,直接导致选项显示为空,把<p>标签去掉就好。
2. 缺少数据库查询的错误处理
如果数据库连接失败、SQL语句有误,你根本没法排查问题出在哪。咱们加上错误处理,方便调试定位。
另外,建议用关联数组代替数字索引(比如$row['user_id']代替$row[0]),这样即使数据库表的字段顺序改变,代码也不会出错,可读性也更强。
修正后的完整代码
<select id="gebruiker" name="gebruiker" class="form-control"> <?php // 先确认数据库连接正常 if (!$conn) { die("数据库连接失败: " . mysqli_connect_error()); } $query = "SELECT * FROM users"; $result = mysqli_query($conn, $query); // 检查SQL查询是否成功 if (!$result) { die("SQL查询错误: " . mysqli_error($conn)); } // 循环输出下拉选项 while ($row = mysqli_fetch_assoc($result)): // 这里替换成你users表实际的字段名,比如id、username $userId = $row['id']; $userName = $row['username']; ?> <option value="<?= $userId ?>"><?= $userId ?> <?= $userName ?></option> <?php endwhile; ?> </select>
额外调试小贴士
- 先手动在数据库客户端执行
SELECT * FROM users,确认有没有数据返回 - 如果还是没内容,检查
$conn是否正确建立了数据库连接 - 可以在循环前加一句
var_dump(mysqli_num_rows($result));,看看查询返回了多少条数据,确认是不是真的没有数据
内容的提问来源于stack exchange,提问作者Outnedwaste
相关产品推荐
相关产品推荐

