PHP本地数据源下拉列表不显示已插入数据问题求助
解决下拉列表不显示「Amsterdam」的问题
嘿,我来帮你搞定这个问题!你插入「Amsterdam」到locatie表后看不到它,核心问题是你的PHP代码只读取了数据库查询结果的第一行,没遍历所有数据。咱们一步步修正:
原代码的问题
你写的$rows = mysqli_fetch_array($sql);只会获取查询结果的第一行数据,之后的循环如果逻辑不对,就没法展示所有的地理位置选项,自然可能看不到「Amsterdam」。
修正后的完整代码
<td>Locatie</td> <select name="locatie" id="per1"> <option selected="selected">Choose one</option> <?php include_once("../config"); // 先确认数据库连接正常 if (!$mysqli) { die("数据库连接失败: " . mysqli_connect_error()); } // 执行查询语句 $sql_query = mysqli_query($mysqli, "SELECT Locatie FROM locatie"); // 用while循环遍历所有查询结果 while ($row = mysqli_fetch_array($sql_query)) { // 转义输出内容,避免XSS和HTML语法问题 $locatie_value = htmlspecialchars($row['Locatie']); echo "<option value='$locatie_value'>$locatie_value</option>"; } // 释放结果集并关闭连接(推荐操作) mysqli_free_result($sql_query); mysqli_close($mysqli); ?> </select>
关键优化点
- 遍历所有结果:用
while ($row = mysqli_fetch_array($sql_query))循环,每次获取一行数据,直到所有结果都处理完,这样不管「Amsterdam」在第几行都能显示 - 安全输出:用
htmlspecialchars()转义输出的地理位置名称,防止恶意脚本注入(XSS攻击)和HTML语法错误 - 连接检查:增加了数据库连接失败的提示,方便你排查连接问题
- 资源释放:用完结果集后释放资源、关闭数据库连接,养成良好的代码习惯
额外排查建议
- 先确认
locatie表中确实存在「Amsterdam」:可以用数据库管理工具(比如phpMyAdmin)执行SELECT * FROM locatie;查询验证 - 检查
../config文件的数据库连接参数:主机、用户名、密码、数据库名是否正确,确保连接的是你插入数据的那个数据库 - 注意大小写:有些数据库(比如MySQL在Linux环境)区分表名和字段名的大小写,确认
locatie表名和Locatie字段名和数据库中的完全一致
内容的提问来源于stack exchange,提问作者guusquish
相关产品推荐
相关产品推荐

