我用从MySQL数据库填充的下拉列表创建了一个表单。正确填写了所有名称的下拉列表,提交表单后,$ _ POST显示数组中具有名称的变量,但是没有值,并且表单的所有其他元素均正确提交。这是我的表格代码
<form action ="returns.php" method="post">
Name:<br><?php
$sql= "SELECT Fund_name FROM fundnames";
$fnames=$connect->query($sql);
echo "<select name='fund'>";
while ($row = $fnames->fetch_array()) {
echo '<option value="' . $row['Fund_Name'] . '">' . $row['Fund_name'] . '</option>';
}
echo "</select>";
?></select>
<br>Date:<br><input type="text" name="date" id="date"><br>
Return: <br><input type = "text" name = "return">
<input type="submit" value="Submit">
</form>
我使用以下命令测试目标脚本中的输出
<?php
print_r($_POST);?>
出现的结果是
Array ( [fund] => [date] => 09/07/2018 [return] => 4 )
我该如何解决?
答案 0 :(得分:1)
这值得一试:
替换
echo '<option value="' . $row['Fund_Name'] . '">' . $row['Fund_name'] . '</option>';
使用
echo '<option value="' . htmlspecialchars($row['Fund_name']) . '">' . htmlspecialchars($row['Fund_name']) . '</option>';
这至少将确保<option>
标签具有有效的html。
但是标准化Fund_name
的大小写可能会解决您的问题。
请注意,您的原始代码使用$row['Fund_Name']
作为值,并使用$row['Fund_name']
作为标签。我的猜测是仅设置了其中之一,因此该值始终为null(这可能会生成警告,但也许您已将其抑制了)