2012-08-16 96 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()); 
相关问题