我应该在表单中使用mysqlenum作为动态下拉列表吗


Should I use mysql enum for a dynamic dropdown in a form?

我的表单中有几个下拉字段,我需要添加一个"添加新"选项,以便用户向列表中添加另一个选项。在mysql中,这些下拉列表当前属于enum类型。我使用php和jQueryajax来捕获表单上的新选项。现在我需要将捕获的选项永久添加到下拉列表中。我应该编写php来向字段添加enum选项,还是应该放弃在mysql中使用enum类型?如果是前者,有没有比这里的答案更好的方法:MySQL向Enum添加字段来做到这一点?我正在使用Codeigniter,并希望在我的数据模型中添加一个函数来添加选项。类似于:

<?php
function add_option_to_dropdown($field, $option)
{

}

听起来这个下拉列表的值可能会经常更改,因此我不会使用ENUM类型。更适合这个目的的是一个存储所有下拉选项的表。例如,您可以制作一个名为dropdown_options的表,该表包含:

  • id列
  • dropdown_id列
  • option_value列
  • option_text列

这样,要获得下拉列表的值,您只需:

SELECT * FROM dropdown_options WHERE dropdown_id = 1;

其中,dropdown_id是您正在生成的下拉列表的id。要添加一个新的下拉值,只需:

INSERT INTO dropdown_options (dropdown_id, option_value, option_text)
VALUES (1, "apple", "Apple");

或者在CodeIgniter中:

$data = array(
    'dropdown_id' => '1',
    'option_value' => 'apple',
    'option_text' => 'Apple');
$this->db->insert('dropdown_options', $data);

比更改枚举的值简单得多!