如何在表中添加动态列与mysql存在?

时间:2017-01-11 15:27:18

标签: mysql

我有桌子,我想添加列,但列的名称将是变量

像这样:

$coulName = col_1_2;
ALTER TABLE `table name` ADD `$coulmName` DOUBLE NOT NULL DEFAULT '0' AFTER `col2`;

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您需要使用prepared statement

SET @colName = 'col_1_2';

SET @s = CONCAT('ALTER TABLE `mytable` ADD `', @colName, 
                '` DOUBLE NOT NULL DEFAULT 0 AFTER `col2`');
PREPARE stmt1 FROM @s;

EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

答案 1 :(得分:1)

在MySQL中,您只能使用预准备语句来实现此目的,因为您无法将变量绑定到表或列名称。这意味着您必须在字符串中组装sql语句并执行它。

但是,您也可以从应用程序代码中完成此操作 - 变量名称表明您可以使用php。同样适用:你必须连接sql语句字符串,不能使用参数。

代码看起来像MySQL中的以下内容:

@coulName = 'col_1_2';
@sql = 'ALTER TABLE `table name` ADD `',@coulmName,'` DOUBLE NOT NULL DEFAULT '0' AFTER `col2`;
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

但是,我不确定定期动态更改现有数据结构是否真的好。这通常表明数据库设计不佳。