我的代码如下:
$sql = "
CREATE TABLE articles (
articleUID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(articleUID),
by tinytext,
article longtext,
game enum('Starcraft','Starcraft 2','Team Fortress 2','Minecraft','Tekkit','other')
)
";
if(mysql_query($sql, $con)) {
echo "The table \"articles\" was created succesfully.<br />";
} else{
echo "Error creating table: " . mysql_error() . "<br />";
}
它是在PHP中,文件还有其他内容,但这是给我带来问题的部分。
当我尝试运行时,我得到的是:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'by tinytext, article longtext, game enum(Starcraft,Starcraft 2,Team Fortress 2,' at line 1
我不知道你是否需要我的其余代码来解决这个问题,但如果你这样做,我会在编辑中发布它。谁能告诉我这里有什么问题?我已经尝试在枚举参数上使用\“代替',但这不起作用。
答案 0 :(得分:3)
BY
是MySQL reserved word,在用作列或表标识符时必须使用反引号引用。
您可以在列定义中声明主键:
$sql = "CREATE TABLE articles (
articleUID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
/* Quote the reserved word BY */
`by` tinytext,
article longtext,
game enum('Starcraft','Starcraft 2','Team Fortress 2','Minecraft','Tekkit','other')
)";
或者,您可以使用括号
在列定义之后声明PRIMARY KEY
$sql = "CREATE TABLE articles (
articleUID int NOT NULL AUTO_INCREMENT,
`by` tinytext,
article longtext,
game enum('Starcraft','Starcraft 2','Team Fortress 2','Minecraft','Tekkit','other'),
PRIMARY KEY (articleUID)
)";
答案 1 :(得分:2)
by
是mysql中的关键字。如果您不想将其用作关键字,请引用它。在定义自动增量和主键时也会出错。
$sql = "CREATE TABLE articles (
`articleUID` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
`by` tinytext,
`article longtext,
`game` enum('Starcraft','Starcraft 2','Team Fortress 2','Minecraft','Tekkit','other')
)";
答案 2 :(得分:0)
您已在列定义之间添加了主键定义。首先声明所有列,然后在最后声明主键。