PHP~列计数不';不匹配第1行的值计数
我正在创建一个注册,我正在使用纯PHP而不是JavaScript将我的表单发送到MySQL数据库,因此一切正常,没有语法错误或任何问题,但我填写了所有信息,然后单击“注册”,它返回一条消息,说“列计数与第1行的值计数不匹配” 我才14岁,所以这对我来说很困惑有人有解决办法吗 这是我的插入代码:PHP~列计数不';不匹配第1行的值计数,php,mysql,Php,Mysql,我正在创建一个注册,我正在使用纯PHP而不是JavaScript将我的表单发送到MySQL数据库,因此一切正常,没有语法错误或任何问题,但我填写了所有信息,然后单击“注册”,它返回一条消息,说“列计数与第1行的值计数不匹配” 我才14岁,所以这对我来说很困惑有人有解决办法吗 这是我的插入代码: $sql = mysql_query("INSERT INTO users(firstname, lastname, email, password, day, month, year, gender)
$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());
有了代码,我看到您忘记插入$SEXT 将数据插入MySQL表时,必须指定哪些数据进入哪列。可以通过在“值”部分之前指定列名来执行此操作:
INSERT INTO tblA (col1, col2) VALUES ('value1','value2');
如果省略该信息,MySQL将期望所有列:
如果您的桌子是这样的:
CREATE TABLE tblA (
col1 INT,
col2 INT
);
INSERT INTO tblA VALUES ('value1', 'value2');
您可以插入如下信息:
CREATE TABLE tblA (
col1 INT,
col2 INT
);
INSERT INTO tblA VALUES ('value1', 'value2');
如果省略列名并且没有为所有列指定值,MySQL将出现“column count Not match value count at row”错误,因为MySQL不知道在缺少的列中放置什么。使用如上所述的表结构
INSERT INTO tblA VALUES ('value1');
将导致该错误
在非严格模式下,MySQL将为省略的列名插入默认值。您试图在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)
您应该对上面的所有变量执行此操作。您可以找到有关转义函数的更多信息。您遗漏了性别列的值(最后一个)您完全遗漏了性别值:
$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代码吗?可能是由于
INSERT
语句在values()
中的值大于或小于()
列中列出的值。发布您的代码,我们来看看。这与您的sql有关,而不是与phpIt有关。这很可能意味着值的数量与列的数量不匹配(即插入tbl(val1)值(1,2))。如果您没有指定要插入的列,则应该这样做。此问题有许多重复项。询问之前您是否搜索过Stackoverflow?不完全是-您可以发现您不需要为每一列提供数据-它可以保持为空,也可以自动填充该列的默认值。@Charles,您完全正确,但我在回答中尽量不提供太多信息。。)@查尔斯,只有在非严格模式下。我试过了,但还是出现了错误,即使设置了默认值。啊,这很有趣,谢谢!似乎我只在非严格模式下工作过。