Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我可以吗;“重新声明”;(更新)表格是否添加一些新列?_Php_Mysql_Sql_Odbc - Fatal编程技术网

Php 我可以吗;“重新声明”;(更新)表格是否添加一些新列?

Php 我可以吗;“重新声明”;(更新)表格是否添加一些新列?,php,mysql,sql,odbc,Php,Mysql,Sql,Odbc,我使用的是PHP,有一个常量声明表列的详细信息 我当前$sql=“CREATE TABLE.$TABLE_name.”。TABLE_COLUMNS;和odbc exec it,其中TABLE_COLUMNS是DEFINE()(常量文字字符串) 这更像是一个SQL问题,而不是编码问题。除了DEFINE之外,我不想更改任何代码;我只想(如果可能的话)使用一条SQL语句来创建表(如果不存在),或者更新表(如果存在),根据需要插入列,在已经存在的行(必须保留)中插入空格、zer0或一些有意义的列 这是可

我使用的是PHP,有一个常量声明表列的详细信息

我当前
$sql=“CREATE TABLE.$TABLE_name.”。TABLE_COLUMNS;
和odbc exec it,其中TABLE_COLUMNS是DEFINE()(常量文字字符串)

这更像是一个SQL问题,而不是编码问题。除了DEFINE之外,我不想更改任何代码;我只想(如果可能的话)使用一条SQL语句来创建表(如果不存在),或者更新表(如果存在),根据需要插入列,在已经存在的行(必须保留)中插入空格、zer0或一些有意义的列


这是可以做到的,还是我必须写一些代码,知道以前的列是什么,现在的列是什么?(删除列怎么样?)

一次定义无法实现这一目标。您应该尝试创建表。如果失败,请尝试创建每一列。并非如此,在大型表上逐个添加列可能非常耗时,因为MySQL实际上正在重新创建整个表并复制所有数据

最好获取表的当前结构,对其进行解析,并添加所需的列


请检查这个。

我有一个类可以这样使用:$table=$db->register_table(Z_table_USERS_SETTINGS);$table->add_column('user_id');$table->add_column('var_id');$table->add_column('value')->type('varchar);$table->add_索引(数组('user_id','var_id'),'unique','uniu user_var'));$table->register();如果您在此处更改某些内容,它将自动更改需要在DB中更改的内容。不幸的是,它使用了其他一些外部类。是否要查看它?您应该研究使用数据库迁移以避免对架构进行此类篡改。一个像样的PHP包是。+1表示两者兼而有之。@XzKto,是的,请将您的类作为答案发布。比ks