2012-08-16 104 views
8

我創建了一個註冊表,並且我只使用了直接的PHP而不是JavaScript來將我的表單發送到MySQL數據庫,所以一切工作正常,沒有語法錯誤或任何東西,但我填寫了我的所有信息,然後單擊「註冊」,它會返回一條消息,說明「列計數與第1行的值計數不匹配」。PHP列計數與第1行的值計數不匹配

我只有14歲,所以這對我來說很困惑,有人有解決方案嗎?

這是我的INSERT INTO代碼:

$sql = mysql_query("INSERT INTO users(firstname, lastname, email, password, day, month, year, gender) 
VALUES('$firstname','$lastname','$email','$db_password','$day','$month','$year')") 
or die (mysql_error()); 
+0

能否請您發表您的PHP代碼? – ChrisM 2012-08-16 14:16:06

+2

可能是'INSERT'語句在'VALUES()'裏面的值多於或少於列'()'中列出的結果。發佈你的代碼,我們會看看。 – 2012-08-16 14:17:25

+1

這與您的sql相關的超過了您的php – Sablefoste 2012-08-16 14:17:57

回答

16

您試圖將7個值插入8列 - 您錯過了插入性別。

正確的代碼是:

$sql = mysql_query("INSERT INTO users(firstname, lastname, email, password, day, month, year, gender) 
VALUES('$firstname','$lastname','$email','$db_password','$day','$month','$year', '$gender')") 
or die (mysql_error()); 

順便說一句,如果你是不是已經在做了,我強烈建議您先逃逸字符串,它們傳遞給查詢像這樣前:

$firstname=mysql_real_escape_string($firstname) 

你應該用上面的所有變量來做到這一點。 Here你可以找到更多關於逃生功能。

+0

哦,上帝......我是這樣一個新手我也傾向於犯這個錯誤:( – Will 2012-08-16 14:29:48

+0

沒問題,很高興幫助和歡迎所以請接受最有幫助的答案,通過點擊上面的綠色複選標記 – weltschmerz 2012-08-16 14:33:07

+1

完成了,它有很多幫助,我也做了mysql_real_escape_string;現在一切都正常了 – Will 2012-08-16 14:37:17

1

與您的代碼在那裏,我看你忘了插入$性別。

將數據插入到MySQL表中時,必須指定將哪些數據放入哪個列。你的價值觀部分之前指定列名稱是:

INSERT INTO tblA (col1, col2) VALUES ('value1','value2'); 

如果忽略這些信息,MySQL會想到的所有列:

如果你的表是這樣的:

CREATE TABLE tblA (
    col1 INT, 
    col2 INT 
); 

你可以插入這樣的信息:

INSERT INTO tblA VALUES ('value1', 'value2'); 

如果你省略列名並且不做指定所有列的值,MySQL會給出「列計數與行計數值不匹配」的錯誤,因爲MySQL不知道應該在缺失的列中放置什麼。使用上述表結構,

INSERT INTO tblA VALUES ('value1'); 

將導致該錯誤。

在非嚴格模式下,MySQL會爲省略列名插入默認值。

+0

不可以相當 - [Here](http://dev.mysql.com/doc/refman/5.1/en/insert.html),你可以發現你不需要爲_every_列提供數據 - 它可以保持空或自動填充列的默認值。 – weltschmerz 2012-08-16 14:39:47

+0

@Charles,你說得很對,但我試圖在答案中不要提供太多的信息。 ;) – 2012-08-16 14:47:49

+0

@Charles,只在非嚴格模式下。我試了一下,發現錯誤,即使設置了默認值。 – 2012-08-16 15:03:46

0

你已經錯過了性別列(最後一個)

+0

哦,上帝......我是這樣的新手我也傾向於犯這個錯誤:( – Will 2012-08-16 14:31:18

0

你是完全缺失的性別值的值:

$sql = mysql_query("INSERT INTO users(firstname, lastname, email, password, day, month, year, gender) 
VALUES('$firstname','$lastname','$email','$db_password','$day','$month','$year', 'gender goes here')") 
or die (mysql_error()); 
相關問題