使用foreach和mysqli_fetch_assoc

时间:2014-08-12 16:19:10

标签: php mysql

我有一个包含两列的mysql表; idtype。我试图检索要在选择值列表中使用的值(也就是下拉列表)。在我的html之外,这个php完美无缺:

$sql = "SELECT * FROM `usertype`";
$query = mysqli_query($con, $sql);
while ($type_lov = mysqli_fetch_assoc($query)) {
echo '<pre>', print_r($type_lov,true), '</pre>';
};

上面的php输出:

Array ( [id] => 1 [type] => System Admin ) 
Array ( [id] => 2 [type] => System Admin2 ) 
Array ( [id] => 3 [type] => System Admin3 ) 
Array ( [id] => 4 [type] => Account Admin ) 
Array ( [id] => 5 [type] => Account User )

为了让它进入SELECT / OPTIONS标签,我尝试了几件事,但没有成功。对我来说最有意义的两次尝试(但是没有用)是:

<!--ATTEMPT 1-->    
<select>
    <?php while ($type_lov = mysqli_fetch_assoc($query)) {
        foreach ($type_lov as $id=>$type) { ?>
            <option value="<?php echo $id; ?>"><?php echo $type; ?></option>
        <?php };
    }; ?>
</select>

<!--ATTEMPT 2-->
<select>
    <?php foreach ($type_lov = mysqli_fetch_assoc($query) as $id=>$type) { ?>
        <option value="<?php echo $id; ?>"><?php echo $type; ?></option>
    <?php }; ?>
</select>

都没有奏效。什么是正确的方法?

1 个答案:

答案 0 :(得分:0)

您应该阅读mysqli_fetch_assoc。它将数据作为关联数组返回,这意味着您的表列用作数组的索引。

此外,为什么你在第一个例子中与foreach结合?你接下来的思考过程是什么?

无论如何,这应该对你的旅程有所帮助:

<select>
    <?php
        while (($data = mysqli_fetch_assoc($query)))
        {
            echo '<option value="' . $data['id'] . '">' . $data['type'] . '</option>';
        }
    ?>
</select>