2015-08-13 34 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所要的,它的語法也有錯誤... –

相關問題