我正在创建一个注册,并且我直接使用PHP而不是JavaScript将我的表单发送到MySQL数据库,所以一切都运行得很好,没有语法错误或任何东西,但我填写了所有的信息并单击“注册”,它返回一条消息说“列计数不匹配行1的值计数”。
我只有14岁,所以这对我来说很困惑,有谁有解决方案吗?
这是我在代码中插入的内容:
$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());发布于 2012-08-16 22:27:57
您正在尝试将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你可以找到更多关于转义函数的信息。
发布于 2012-08-16 22:25:48
这里有您的代码,我看到您忘记插入$gender。
在将数据插入到MySQL表中时,必须指定将哪些数据放入哪一列。为此,请在VALUES部分之前指定列名:
INSERT INTO tblA (col1, col2) VALUES ('value1','value2');如果省略该信息,MySQL将使用所有列:
如果您的表是这样的:
CREATE TABLE tblA (
col1 INT,
col2 INT
);您可以像这样插入信息:
INSERT INTO tblA VALUES ('value1', 'value2');如果省略列名并且没有为所有列指定值,由于MySQL不知道在缺少的列中放入什么,MySQL将会出现"Column count as match value count at row“错误。利用如上所述的表结构,
INSERT INTO tblA VALUES ('value1');将导致该错误。
在非严格模式下,MySQL将为省略的列名插入默认值。
发布于 2012-08-16 22:28:47
您缺少性别列的值(最后一个)
https://stackoverflow.com/questions/11989112
复制相似问题