PHP / Mysql数据库填充的下拉列表吐出索引号而不是字符串值

时间:2017-07-27 23:23:35

标签: php mysql

我无法弄清楚为什么我的下拉列表(从Mysql填充)给我一个数字而不是字符串值。下面是下拉列表的代码,它正确显示项目名称。问题是,当我稍后拉出所选项目时,我得到一个数字而不是用户选择的字符串项目名称。

<select name="product1" class="form-control" id="sel1">
<?php
    require('./PHPConnect.php');

    $dropdown = array();
    $downquery = "SELECT * FROM  masterDESC";

    $response = @mysqli_query($dbc, $downquery);

    if($response){
        while(($row = @mysqli_fetch_array($response,MYSQL_ASSOC))){
            $dropdown[] = $row['DESCRIPTION'];
        }
    }

    foreach($dropdown as $key => $value){
        echo '<option value=' . $key . '>' . $value . '</option>';
    }

    echo "</select>";
    mysqli_close($dbc);
?>

以下是用于拉取所选项目的代码。

$product1 = $_POST['product1'];

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

正在吐痰放索引号,因为你正在检索一个只是描述值的数组(来自这个&#34; $ dropdown [] = $ row [&#39; DESCRIPTION&#39;];&#34 ;您已从数据库返回,并且当没有列出键时 - 数组索引是$键 - 因此数字

您需要更改以下内容

foreach($dropdown as $key => $value){
    echo '<option value=' . $key . '>' . $value . '</option>';
}

将此选项的值设置为与显示的内容相同(或将其保留为数字,稍后将其作为$ dropdown [index]引用。

foreach($dropdown as $value){
    echo '<option value="' . $value. '">' . $value . '</option>';
}

答案 1 :(得分:0)

没关系,我明白了。这是foreach的关键价值对。我过去创造的类似下降是必要的,但在这里没有工作。我摆脱了foreach并且它起作用了。

<select name="product1" class="form-control" id="sel1">
                    <?php
                        require('./PHPConnect.php');

                        //$dropdown = array();

                        $downquery = "SELECT * 
                                FROM  masterDESC";

                        $response = @mysqli_query($dbc, $downquery);

                        if($response){
                            while(($row = @mysqli_fetch_array($response,MYSQL_ASSOC))){
                                $dropdown = "<option value=\"{$row['DESCRIPTION']}\">
                                {$row['DESCRIPTION']}</option>\n";
                                echo $dropdown;
                            }
                        }

                        echo "</select>";
                        mysqli_close($dbc);
                    ?>