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

Posted

技术标签:

【中文标题】PHP ~ 列数与第 1 行的值数不匹配【英文标题】:PHP ~ Column count doesn't match value count at row 1 【发布时间】:2012-08-12 22:01:19 【问题描述】:

我正在创建一个注册,我只使用 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());

【问题讨论】:

你能发布你的PHP代码吗? 可能是由于INSERT 语句在VALUES() 中的值多于或少于() 列中列出的值。发布您的代码,我们会看看。 这与你的sql比你的php更相关 这很可能意味着值的数量与列的数量不匹配(即INSERT INTO tbl (val1) VALUES (1, 2))。如果您没有指定要插入哪些列,则应该这样做。 这个问题有很多重复项。问之前你在 *** 上搜索过吗? 【参考方案1】:

您正在尝试将 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你可以找到更多关于转义函数的信息。

【讨论】:

【参考方案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 将为省略的列名插入默认值。

【讨论】:

不完全 - Here 你会发现你不需要为 every 列提供数据 - 它可以保持空白或自动填充列。 @Charles,你说得对,但我尽量不在回答中提供太多信息。 ;) @Charles,仅在非严格模式下。我试过了,我得到了错误,即使设置了默认值。 啊,这很有趣,谢谢!好像我只在非严格模式下工作过。【参考方案3】:

您错过了性别列(最后一个)的值

【讨论】:

【参考方案4】:

你完全错过了性别值:

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

【讨论】:

以上是关于PHP ~ 列数与第 1 行的值数不匹配的主要内容,如果未能解决你的问题,请参考以下文章

列数与第 1 行 php mysql 的值计数不匹配

列计数与第 1 行的值计数不匹配 VendorError:1136

错误代码:1136。列数与第 1 行的值计数不匹配,我找不到错误

例外:尽管范围是从数据创建的,但数据中的列数与范围中的列数不匹配

异常:数据中的列数与范围内的列数不匹配

为啥叶子中的样本数与 DecisionTreeClassifier 的父节点中的值数不匹配?