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

时间:2018-02-04 03:31:41

标签: javascript mysql

我有一个名为'website'的数据库,它有一个'users'表,它有5列,分别是:

idfirst_namelast_nameusernamepassword

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

由于注册页面没有'id'(因为id用于添加值增量),我只想插入first_namelast_nameusername,{ {1}}将数据库记录中有5个值,但我收到Postman的以下消息

password

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

UserDB.js - 已更新

"sqlMessage": "Out of range value for column 'id' at row 1",

Postman的结果:

    insert(user, callback) {
        var sql = "INSERT INTO website.users VALUES(?,?,?,?)";

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

user.js的

{
    "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')"
}

2 个答案:

答案 0 :(得分:0)

试试这个 DB.js:

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)
}

我已从插入查询中删除了id列,并假设列id is auto-increment

更新了以下部分,请看一下:

    getPassword() {
           return this.Password;
       } 

将此替换为..

      getPassword() {
             return this.password;
         }   

变量名称有所不同。

答案 1 :(得分:0)

只需指定要明确插入的字段:

INSERT INTO website.users (first_name,last_name,username,password) VALUES(?,?,?,?);

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

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
  3. 更改您的DDL

    然后一切都会好的。