2015-08-13 32 views
-1

这是我在的index.php代码:的MySQL如何设置USERNAME字段应指定为唯一

$sql = "CREATE TABLE 6470exerciseusers (
USERNAME VARCHAR(100), 
'PASSWORD_HASH' CHAR(40), 
PHONE VARCHAR(10), 
UNIQUE (USERNAME) 
)"; 

,这是错误:

Error creating table: 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 ''PASSWORD_HASH' CHAR(40), PHONE VARCHAR(10), UNIQUE (USERNAME))' at line 3

+0

在MySQL中,你将不得不看是这样的: 'ADD UNIQUE INDEX'USERNAME_UNIQUE'('USERNAME' ASC)' –

回答

0
CREATE TABLE Yourtablename (
USERNAME VARCHAR(100) UNIQUE , 
PASSWORD_HASH CHAR(40), 
PHONE VARCHAR(10), 
) 

有错误的SQL语法你可以把它明确使用上述声明

2

尝试:

$sql = "CREATE TABLE 6470exerciseusers (
    `USERNAME` VARCHAR(100) UNIQUE, 
    `PASSWORD_HASH` CHAR(40), 
    `PHONE` VARCHAR(10) 
    )"; 

表格结构错过Primary key,那么最好将unique更改为PRIMARY KEY

$sql = "CREATE TABLE 6470exerciseusers (
    `USERNAME` VARCHAR(100) primary key, 
    `PASSWORD_HASH` CHAR(40), 
    `PHONE` VARCHAR(10) 
    )"; 
1

您创建查询错误,所以让我先更正:

您使用'PASSWORD_HASH' ,通过删除''(单引号)进行更正。

$sql = "CREATE TABLE 6470exerciseusers (
USERNAME VARCHAR(100), 
PASSWORD_HASH CHAR(40) 
PHONE VARCHAR(10), 
UNIQUE (USERNAME) 
)"; 

也请记,你也需要把整理类型USERNAME独特的领域。如果你不这样做可能第二次记录具有相同的值插入失败,违反约束。您可能需要使用区分大小写的排序规则(例如utf8_cs)创建列:

$sql = "CREATE TABLE 6470exerciseusers (
USERNAME VARCHAR(100) SET utf8 COLLATE utf8_cs NOT NULL UNIQUE, 
PASSWORD_HASH CHAR(40) 
PHONE VARCHAR(10) 
)"; 

这可能对您有帮助。在SQL syntax

+1

你能停止编辑帖子只是为了添加粗体?这不是一个改进。我正在考虑升级到元。 –

+0

这是目前正在Meta中讨论的。请让我知道你已经看到了这个评论,我会删除它。 http://meta.stackoverflow.com/questions/302448/use-of-stackoverflow-as-an-advertising-platform –

+0

@麦龙洞:这是给我的吗? @克里斯贝克:我需要删除哪部分? –

0

错误应该是:

$sql = "CREATE TABLE 6470exerciseusers (USERNAME VARCHAR(100) unique 'PASSWORD_HASH' CHAR(40))" 
+0

这不仅是OP所要的,它的语法也有错误... –

相关问题