首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP ~列计数与第1行的值计数不匹配

问PHP ~列计数与第1行的值计数不匹配
EN

Stack Overflow用户
提问于 2012-08-16 22:15:31
回答 4查看 72.2K关注 0票数 16

我正在创建一个注册,并且我直接使用PHP而不是JavaScript将我的表单发送到MySQL数据库,所以一切都运行得很好,没有语法错误或任何东西,但我填写了所有的信息并单击“注册”,它返回一条消息说“列计数不匹配行1的值计数”。

我只有14岁,所以这对我来说很困惑,有谁有解决方案吗?

这是我在代码中插入的内容:

代码语言:javascript
复制
 $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());
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-16 22:27:57

您正在尝试将7个值插入到8列中-您缺少插入性别。

正确的代码应该是:

代码语言:javascript
复制
$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());

顺便说一句,如果您还没有这样做,我强烈建议您在将字符串传递给查询之前先对字符串进行转义,如下所示:

代码语言:javascript
复制
$firstname=mysql_real_escape_string($firstname)

您应该使用上面的所有变量来执行此操作。Here你可以找到更多关于转义函数的信息。

票数 24
EN

Stack Overflow用户

发布于 2012-08-16 22:25:48

这里有您的代码,我看到您忘记插入$gender。

在将数据插入到MySQL表中时,必须指定将哪些数据放入哪一列。为此,请在VALUES部分之前指定列名:

代码语言:javascript
复制
INSERT INTO tblA (col1, col2) VALUES ('value1','value2');

如果省略该信息,MySQL将使用所有列:

如果您的表是这样的:

代码语言:javascript
复制
 CREATE TABLE tblA (
     col1 INT,
     col2 INT 
 );

您可以像这样插入信息:

代码语言:javascript
复制
INSERT INTO tblA VALUES ('value1', 'value2');

如果省略列名并且没有为所有列指定值,由于MySQL不知道在缺少的列中放入什么,MySQL将会出现"Column count as match value count at row“错误。利用如上所述的表结构,

代码语言:javascript
复制
INSERT INTO tblA VALUES ('value1');

将导致该错误。

在非严格模式下,MySQL将为省略的列名插入默认值。

票数 1
EN

Stack Overflow用户

发布于 2012-08-16 22:28:47

您缺少性别列的值(最后一个)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11989112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档