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 行的值计数不匹配 VendorError:1136
错误代码:1136。列数与第 1 行的值计数不匹配,我找不到错误