2014-06-26 27 views
-4

我開始使用一個新的php腳本,並且第一次使用了mysql中的DATATIME選項。我認爲這會造成問題。SQL語法中的錯誤DATATIME選項

我的SQL表:

id int(6) auto_increment, 
name varchar(40) not null, 
pseudo varchar(40) not null, 
email varchar(40) not null, 
password varchar(40) not null, 
plan varchar(40) not null, 
date DATETIME DEFAULT CURRENT_TIMESTAMP, 
points int(6) not null, 
primary key(id,name,pseudo,email,password,date,points,plan) 

當我嘗試執行此查詢:

insert into users(NULL,"name","pseudo","[email protected]","Pass1919",NULL, 
"100"); 

此錯誤顯示:

ERROR 1064(42000):您有一個您的SQL語法錯誤;請檢查 手冊,該手冊對應於您的MySQL服務器版本的右邊 語法以在'NULL',' '名稱','僞','[email protected]','Pass1919',NULL,'100'''在1號線

+4

爲什麼你有這麼大的複合鍵主要'鍵(ID,名稱,僞,電子郵件,密碼,日期,點,計劃)' –

+0

http://dev.mysql.com/doc/refman/5.5/en /insert.html –

回答

0

由於別人都說過了,

insert into users(name,pseudo,email,password,paln,date,poits) 
values("name","pseudo","[email protected]","Pass1919",'', NULL, "100"); 

plan varchar(40)not null,

他們錯過的計劃不是null,並且要麼輸入null作爲日期,要麼我寧願完全忽略它。

insert into users(name,pseudo,email,password,paln,poits) 
values("name","pseudo","[email protected]","Pass1919",'', "100"); 

如果您在上述某些響應中統計字段和輸入,它們並不相等。插入字段列表是可選的,但我會使用它們,爲了便於閱讀,並確保輸入的順序和數量正確。

最後一件事情變成主鍵,只是自動增加字段,如果你需要其他複合索引,你應該將它們分開添加,並根據你的需求進行獨特的設置。主鍵應該是一個代理鍵,因爲這種方式

  • 的值是唯一的系統範圍內的,因此,從未再利用定義
  • 值是系統產生
  • 值不是由用戶或應用程序可操縱
  • 值不包含語義
  • 值不爲值不是從不同的域組成的幾個值的用戶或應用程序
  • 可見。

其他鍵應該與數據有關,就像我說的,如果你需要一個複合唯一鍵,或者只是一個獨特的電子郵件,使它與主分離。

+0

非常感謝你..我很長一段時間沒有MySQL ..謝謝提醒:)))(y) – YAK

1

試試這個..

insert into users(name,pseudo,email,password,paln,date,poits) 
values("name","pseudo","[email protected]","Pass1919",NULL, "100"); 
+0

非常感謝,工作..我忘了「價值觀」。 – YAK

0

嘗試添加要與values關鍵字插入值的表字段的名稱。也自動增加id不能NULL如果你不想送id, date 值不變,這兩者都將收集值自動帶增量和當前時間戳

insert into users(name,pseudo,email,password,plan,points) values ('name','pseudo','[email protected]','Pass1919','','100'); 
+0

非常感謝,我忘了「價值觀」。 – YAK

+0

您的歡迎:)不要忘記接受/ upvote有用的答案 –

0

你必須使用關鍵字值:

insert into users values(NULL,"name","pseudo","[email protected]","Pass1919",NULL, 
"100"); 
+0

非常感謝工作..我忘了「價值觀」。 – YAK

0

不要將第一個參數作爲NULL傳遞,因爲您已經將它指定爲主鍵和自動遞增。 使用這種

insert into users values("name","pseudo","[email protected]","Pass1919",NULL, "100"); 
+0

非常感謝,我忘了「價值觀」。 – YAK

0

試試這個

INSERT INTO users(
    `name`, 
    `pseudo`, 
    `email`, 
    `password`, 
    `plan`, 
    `points` 
) 
VALUES (
    NULL, 
'name', 
'pseudo', 
'[email protected]', 
'Pass1919', 
NULL, 
'100'); 
+0

非常感謝,工作..我忘了「價值觀」。 – YAK

+0

@ user3779014不要忘記接受/ upvote如果有幫助的答案 – Sadikhasan

0

此外,當你面對的整數你不需要插入,所以當把它們放在報價,你可以做

 insert into users(name,pseudo,email,password,plan,date,points) 
values("name","pseudo","[email protected]","S3CuR3", "PLAN", "2014-06-26", 100);