PHP执行单条查询结果填充表单字段为空的问题求解
问题原因
- 变量名不匹配:你的查询结果存储在
$result变量中,但表单渲染时调用的是$row["Azienda"],两个变量没有关联,自然取不到值。 - 结果读取方法错误:你使用了
fetchAll()获取查询结果,该方法返回的是包含所有匹配行的二维数组,即使只查到1条数据,也需要通过$result[0]["Azienda"]才能读取到字段值;如果你只需要获取单条数据,直接使用fetch()方法更合理,会直接返回一维的单条结果数组。 - 查询无匹配结果:可能是
$_GET['Azienda']传值异常、WHERE条件匹配不到数据,你可以在查询执行后加var_dump($result)调试,确认是否真的查询到了数据。 - 转义函数异常:你自定义的
escape函数可能出现报错、返回空的问题,可以先临时去掉转义直接输出字段值,验证是否是转义逻辑的问题。
修复代码示例
查询部分修正
$name = $_GET['Azienda']; $sql = "SELECT [...] FROM [...] WHERE [...] = :name ORDER BY [...]"; $statement = $connection->prepare($sql); $statement->bindParam(':name', $name, PDO::PARAM_STR); $statement->execute(); // 单条数据直接用fetch获取,赋值给表单用到的$row变量 $row = $statement->fetch(PDO::FETCH_ASSOC);
表单部分优化(增加兜底判断避免报错)
<form method="post"> <label for="Azienda">Azienda</label> <input type="text" id="Azienda" name="Azienda" value="<?php echo isset($row["Azienda"]) ? escape($row["Azienda"]) : ''; ?>"> </form>
内容的提问来源于stack exchange,提问作者gigiopasticcio
相关产品推荐
相关产品推荐

