我有桌子,我想添加列,但列的名称将是变量
像这样:$coulName = col_1_2;
ALTER TABLE `table name` ADD `$coulmName` DOUBLE NOT NULL DEFAULT '0' AFTER `col2`;
我该怎么做?
答案 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;
但是,我不确定定期动态更改现有数据结构是否真的好。这通常表明数据库设计不佳。