Php MySQL向枚举添加字段

Php MySQL向枚举添加字段,php,mysql,Php,Mysql,我必须向数据库表中添加一些枚举选项。问题是,我必须对多个表和数据库执行此操作,它们可能不都具有相同的枚举数据类型。是否有编写alter table查询或类似于将选项附加到枚举数据类型的内容的原因 如果纯粹在MySQL中无法做到这一点,您将如何使用PHP脚本解决此问题?附加枚举值的方法并不简单 这很难看,也没有经过测试,但我想它会给你一个想法: <?php $sql = "select table_schema , table_name

我必须向数据库表中添加一些枚举选项。问题是,我必须对多个表和数据库执行此操作,它们可能不都具有相同的枚举数据类型。是否有编写alter table查询或类似于将选项附加到枚举数据类型的内容的原因


如果纯粹在MySQL中无法做到这一点,您将如何使用PHP脚本解决此问题?

附加枚举值的方法并不简单

这很难看,也没有经过测试,但我想它会给你一个想法:

<?php

$sql = "select table_schema
             , table_name
             , column_name
             , column_type
             , is_nullable
             , column_default
          from information_schema
         where data_type = 'enum'";

$res = mysql_query($sql);

while ($row = mysql_fetch_assoc($res)) {

  // these are important -->       leading comma --v      close paren --v
  $new_enum = substr($row['column_type', 0, -1) . ",'new','enums','here')"

  $sql = "alter table `{$row['table_schema']}`.`{$row['table_name']}`";
  $sql .= " modify column `{$row['column_name']}`";
  $sql .= " $new_enum";
  $sql .= ($row['is_nullable'] == 'YES') ? " NULL" : " NOT NULL";
  $sql .= " default $row['column_default']";

  mysql_query($sql);
}

如果在多个表中使用相同的枚举值,则可能值得使用这些值创建一个表,并使用外键引用枚举名称。通过这种方式,您可以在单个位置维护枚举。不过,这个解决方案确实是情境性的,所以在我说“去做”之前,我想更多地了解您要完成的任务以及枚举的用途。这主要是因为有多个数据库。它们都是CMS的实例,但有些有自定义的添加,有些没有,因此,我不能对它们全部使用一个覆盖alter语句。另外,我可以看到将这些值存储在单独的表中的好处,但这并不是一个真正的选项,因为需要更改的代码量太多。显示
$table
中的列,如“$field”更好。