我使用以下字段创建了普通的注册表:
名称,电子邮件,邮件,性别,密码
我正在使用express.js,并且在发布路由后,我通过
需求主体(参数)

console.log(req.body)显示所有参数。

现在我有与前面提到的相同列的mysql表。如果我确实使用纯字符串插入(例如:abcs),则可以工作,即将值插入到mysql表中。此外,表单中的电子邮件是db中的用户名。
当我尝试插入所有字段时,它显示错误:(未知用户名字段)。用户名varchar(50)是其定义。在日志中,我看到密码字段的输入用单引号引起来,但是对于电子邮件,它变成:('user@mail'.'com')。我还使用了knex,这是mysql文档中提到的替代方法,并且得到了相同的错误(未知的用户名)。

有人可以告诉我如何通过nodejs + express将电子邮件存储在mysql数据库中吗

db.js

var mysql = require('mysql');

// setup mysql
var dbcon = mysql.createConnection({
    host: 'localhost',
    database: 'test',
    user: 'flip',
    password: 'flop'
});

dbcon.connect(function (err) {
    if (err) throw err;
    console.log("Connected to db");
});
module.exports = dbcon;


路由/index.js:

var dbcon = require('../db');
.
.
router.post('/signup', function (req, res) {
    console.log(req.body);
   /* knex('users').insert( {
        user_id: 1,
        password: req.body.su_password,
        u_firstname: req.body.su_firstname,
        u_lastname: req.body.su_lastname,
        u_gender: req.body.su_gender,
        u_dob: req.body.su_date,
    }).then(function(arg){
        console.log(arg);
    });
    */
    dbcon.connect(function (err) {
        var sqlv = {
            user_id: 1,
            password: req.body.su_password,
            u_firstname: req.body.su_firstname,
            u_lastname: req.body.su_lastname,
            u_gender: req.body.su_gender,
            u_dob: req.body.su_date
        };

        /*var sql = "insert into `users` values (?,??,??,??,??,??,??);";
        var sqlv = [1,req.body.su_email, req.body.su_password, req.body.su_firstname, req.body.su_lastname, req.body.su_gender, req.body.su_date];
        sql = mysql.format(sql,sqlv);
        */
        //var sql ="insert into usertmp (`username`,`password`) values ('"+req.body.su_email+"','"+req.body.su_password+"');";
        dbcon.query("insert into users values ? ;", sqlv, function (err, result) {
            if (err) {
                console.log(err);
                throw err;
            }
            console.log("inserted into users " + result);
        });
    });
res.redirect('/');
});


路由/index.js中的console.log(req.body):

{ su_firstname: 'user',
  su_lastname: 'virus',
  su_email: 'user@mail.com',
  su_gender: 'm',
  su_date: '1999-01-01',
  su_password: 'passowrd00' }


错误(对于当前示例):

{错误:ER_PARSE_ERROR:您的SQL语法有误;检查
与MySQL服务器版本相对应的手册,以在第1行的'user_id = 1,password ='passowrd00',u_firstname ='user',u_lastname ='附近使用正确的语法

错误(用于使用实际的SQL查询进行插入,并且每个值都用单引号引起来):

未处理的拒绝错误:ER_BAD_FIELD_ERROR:未知列“用户名”
在“字段列表”中

最佳答案

我想到了 !
这不是来自数据库的nodejs / expresjs错误。
在数据库中,我使用了触发器,却忘记了使用NEW / OLD前缀。

关于mysql - 如何在Node JS MySQL中解析电子邮件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51411325/

10-11 07:15
查看更多