MySql没有更新列

时间:2015-09-24 08:17:19

标签: php mysql

我正在尝试在运行脚本时将两列添加到数据库中。问题是当第二列被创建时,当我真的想要int时,它的类型为varchar2

我的查询:

$query1 = "ALTER TABLE `keyword_table` ADD `".$currentWeek."` INT NOT NULL AFTER `".$previousWeek."_url`";
$query2 = "ALTER TABLE `keyword_table` ADD `".$currentWeek."_url` VARCHAR2(100) NOT NULL AFTER `".$currentWeek."`"

变量放入时的查询:

ALTER TABLE `keyword_table` ADD `07_07_2015` INT NOT NULL AFTER `01_07_2015_url`
ALTER TABLE `keyword_table` ADD `07_07_2015_url` VARCHAR2(100) NOT NULL AFTER `07_07_2015`

这些查询是我想要的,但是当第二个查询运行时,它会创建我想要的列,但是INT而不是VARCHAR2。我检查了语法,我继续使用PhpMyAdmin并查看插入列时使用的语法,它与上面的相同。

为什么它没有使列成为正确的类型?

编辑

我运行了这样的代码:

$query = "ALTER TABLE `keyword_table` ADD `".$currentWeek."` INT NOT NULL AFTER `".$previousWeek."_url`";
mysqli_query($conn, $query);
echo $query.'<br>';
$query = "ALTER TABLE `keyword_table` ADD `".$currentWeek."_url` VARCHAR2(100) NOT NULL AFTER `".$currentWeek."`";
mysqli_query($conn, $query);
echo $query.'<br>';

2 个答案:

答案 0 :(得分:2)

VARCHAR2是Oracle特有的供应商。如果您不使用Oracle,则应使用VARCHAR(100)代替。

在大多数情况下,差别不大。

区别在于......

VARCHAR(100) - 无论是否只有50个字符,分配的内存为100。

VARCHAR2(100) - 分配的内存仅等于输入字段的字符数。

快乐的编码!

答案 1 :(得分:0)

mysql中没有数据类型为VARCHAR2。请改用VARCHAR。

有关mysql支持的数据类型列表,请参阅:https://dev.mysql.com/doc/refman/5.0/en/data-types.html