首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将仅4列的值添加到具有5列的MySQL数据库中

将仅4列的值添加到具有5列的MySQL数据库中
EN

Stack Overflow用户
提问于 2018-02-04 03:31:40
回答 2查看 262关注 0票数 1

我有一个名为“网站”的数据库,它有一个“用户”表,其中有5列,分别是:

idfirst_namelast_nameusernamepassword

我已经在一个名为User.js的js文件中声明了构造函数,并且我有一个文件UserDB.js,它将在我的网站的注册表单中执行SQL命令,以在数据库中添加详细信息。

由于注册页面没有“id”(因为id用于添加值增量),所以我只想将first_namelast_nameusernamepassword插入到有5个值的数据库记录中,但是我会从邮递员那里得到以下消息

代码语言:javascript
运行
复制
"sqlMessage": "Out of range value for column 'id' at row 1",

这是我的UserDB.js文件,我必须放置什么来不影响id列?

UserDB.js -更新

代码语言:javascript
运行
复制
    insert(user, callback) {
        var sql = "INSERT INTO website.users VALUES(?,?,?,?)";

        db.query(sql, [user.getFirstName(), user.getLastName(), user.getUsername(), user.getPassword()], callback)
    }

邮差调查结果:

代码语言:javascript
运行
复制
{
    "code": "ER_WRONG_VALUE_COUNT_ON_ROW",
    "errno": 1136,
    "sqlMessage": "Column count doesn't match value count at row 1",
    "sqlState": "21S01",
    "index": 0,
    "sql": "INSERT INTO website.users VALUES('first','last','user','123')"
}

User.js

代码语言:javascript
运行
复制
"use strict";

class User {
    constructor(first_name, last_name, username, password) {
        this.first_name = first_name;
        this.last_name = last_name;
        this.username = username;
        this.password = password;
    }

    getFirstName() {
        return this.first_name;
    }

    getLastName() {
        return this.last_name;
    }

    getUsername() {
        return this.username;
    }

    getPassword() {
        return this.Password;
    }    
}

module.exports = User;
EN

回答 2

Stack Overflow用户

发布于 2018-02-04 03:43:11

试试这个DB.js:

代码语言:javascript
运行
复制
insert(user, callback) {
    var sql = "INSERT INTO website.users (`first_name`,`last_name`,`username`,`password`) VALUES(?,?,?,?)";

    db.query(sql, [user.getFirstName(), user.getLastName(), user.getUsername(), user.getPassword()], callback)
}

我从insert查询中删除了id列,并假设列是id is auto-increment

更新以下部分,请看:

代码语言:javascript
运行
复制
    getPassword() {
           return this.Password;
       } 

把这个换成..。

代码语言:javascript
运行
复制
      getPassword() {
             return this.password;
         }   

变量名有差异。

票数 0
EN

Stack Overflow用户

发布于 2018-02-04 03:43:29

只需指定要显式插入的字段:

代码语言:javascript
运行
复制
INSERT INTO website.users (first_name,last_name,username,password) VALUES(?,?,?,?);

还删除php代码中的第一个值:

代码语言:javascript
运行
复制
db.query(sql, [user.getFirstName(), user.getLastName(), user.getUsername(), user.getPassword()], callback);

如果DDL没有问题,未指定的字段将自动填充一个值。

这里的代码现在还可以,但是您的数据已经被污染了。所以你现在应该做的是:

  1. 删除表中的所有无效行。
  2. 用:ALTER TABLE users AUTO_INCREMENT = 6; --replace it with the right value修改您的DDL

然后一切都会好起来的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48604413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档