我应该从数据库中获取数据以创建下拉列表吗


Should I get data from my database to create a dropdown list?

我有一个带有下拉选择的表单,其选项是从数据库上的表中确定的。我会定期(手动(在下拉列表和数据库中添加更多选项。要么我可以从数据库中进行下拉选择,如下所示:

<select class="form-control" name="category" id="category">
    <?php
    $sql = "SELECT id, category FROM categories;";
    $result = $GLOBALS['conn']->query($sql);
    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {
            $category = $row['category'];
            $id = $row['id'];
            echo "<option value='$id'>$category</option>";
        }
    }
    ?>
</select>

这会给我更少的工作,因为我现在只需要更新数据库,表单就会自己更新。

或者我可以手动将选项输入到这样的表格中:

<select class="form-control" name="category" id="category">
    <option value='1'>option1</option>
    <option value='2'>option2</option>
    <option value='3'>option3</option>
</select>

这种方式将需要更多的手动工作,但其优点是不必每次都连接到数据库(服务器的工作更少(。

我的问题是我应该使用哪种方法?给我更多工作的方法还是给服务器更多工作的方式?

有支持和反对使用数据库进行选择的参数。至于支持参数,更新起来相对容易-你只需插入一个新值,它就会出现在你的表单中。这种方法的问题是,每次你提交表单时,你的应用程序都会进行查询。在点击量数百万的网站上,这不是一个好主意。因此,使用的替代方案是将查询结果缓存在某个中间层中,尤其是当这些值没有太大变化时。根据我的经验,处理这些值的最佳方法是从配置文件加载它们。这些值很少更改,可以在其中添加新值。这些仍然可以缓存,并且不需要数据库命中。