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

2022-08-31 00:57:38

我正在创建一个注册,我只使用直接的PHP而不是JavaScript将我的表单发送到MySQL数据库,所以一切正常,没有语法错误或任何东西,但我填写了我的所有信息并单击“注册”,它返回一条消息,说“列计数与第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());

答案 1

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

正确的代码是:

$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)

您应该对上述所有变量执行此操作。在这里,您可以找到有关转义功能的更多信息。


答案 2

有你的代码,我看到你忘记插入$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不知道在缺少的列中放入什么。采用如上表结构,

INSERT INTO tblA VALUES ('value1');

将导致该错误。

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


推荐