下拉列表中的值不会传递到$ _POST中的php脚本

时间:2018-09-06 15:25:57

标签: php html

我用从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 )

我该如何解决?

1 个答案:

答案 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(这可能会生成警告,但也许您已将其抑制了)