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