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

时间:2016-08-07 22:28:02

标签: php html mysql database database-management

我有一个带有下拉选择的表单,其选项由数据库中的表确定。我会定期(手动)向下拉列表和数据库添加更多选项。我可以让下拉选项从数据库中获取选项,如下所示:

<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>

这种方式需要更多的手动工作,但每次都不需要连接数据库(服务器的工作量减少)。

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

1 个答案:

答案 0 :(得分:0)

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