【问题标题】:Column Count vs Value Count on insert statement - PHP/MySQL插入语句上的列计数与值计数 - PHP/MySQL
【发布时间】:2013-09-29 17:03:49
【问题描述】:

我正在构建一个员工数据库,但似乎遇到了一个有趣的问题。 当我运行查询以添加新用户/员工时,出现错误:

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

根据我的研究,插入比插入语句示例第一部分中声明的值更多/更少的值似乎是一个错误:

INSERT INTO table (col1, col2) VALUES (val1, val2, val3)

但问题是,我查看了我的查询并且列和值完全匹配(计数)。我什至在我的查询中查找了一些东西,例如缺少引号、逗号等。

这是我的代码(查询):

$db->query("INSERT INTO userdata (
                Username,
                Email,
                Phone,
                Password,
                FirstName,
                LastName,
                Address,
                City,
                State,
                Zip,
                JobTitle,
                UserGroup,
                JobStatus,
                Points,
                Status,
                BirthDate,
                HireDate,
                HourlyRate,
                DateAdded,
                SSN
            ) VALUES (
                '$Username',
                '$Email',
                '$Phone',
                '$Password',
                '$FirstName',
                '$LastName',
                '$Address',
                '$City',
                '$State',
                '$Zip',
                '$JobTitle',
                '$Group',
                '$JobStatus',
                0,
                '$Status',
                '$BirthDate',
                '$HireDate',
                '$HourlyRate'
                '$TodaysDate',
                '$SSN'
            )") or die(mysqli_error($db));

注意事项:

  • 并非表中的所有列都在此处插入了数据(我认为可以这样做,诸如自动递增 ID 之类的内容将自行填写,其他列将留空)

  • 从我所做的变量转储来看,所有这些变量都是有效的。

我对此感到非常困惑,如果有任何帮助,我们将不胜感激。

【问题讨论】:

  • UserGroup出现两次; JobTitleUserGroupJobStatus 似乎顺序错误
  • 我认为SSN 是“社会安全号码”,希望它不是必填字段 ;-)
  • SSN 确实是社会的,但它只是用于会计目的的最后几位数字。我已将 OP 更新为新查询,但仍然收到相同的错误 :(
  • '$HourlyRate' 值后缺少逗号
  • 我以为我检查了一切,就是这样,谢谢先生!

标签: php mysql sql


【解决方案1】:

再次检查以下部分:

    INSERT INTO userdata(...,
                    JobStatus,
                    UserGroup,
                    Points,
                    UserGroup,
                    Status,
                    .....
            ,)VALUES(...,
                   $JobStatus',
                   0,
                  '$Group',
                   '$Status',
                   ......
                   )

在 values(, ?, ?, ?) 中,在 jobstatus 之后,应该有 UserGroup,然后是 Points。并且 UserGroup 出现了两次。

【讨论】:

  • 哎呀,我在寻找修复/移动内容时不小心复制了该列,我已经更新了原始帖子中的查询。编辑:仍然得到同样的错误:(
  • 尝试使用值为 'NULL' 的 autoincreament_feild/primarykey_feild 插入查询并告诉我们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-20
  • 2019-05-19
相关资源
最近更新 更多