我创建了一个包含以下字段的普通注册表格: 名称,电子邮件,邮件,性别,密码 我正在使用express.js,并且在发布路线内,我通过 req.body。(参数)
console.log(要求正文)显示所有参数。
现在我有mysql表,与前面提到的列相同。如果我确实使用纯字符串插入(例如:abcs),则可以工作,即将值插入到mysql表中。此外,表单中的电子邮件是db中的用户名。 当我尝试插入所有字段时,它显示错误:(未知用户名字段)。用户名varchar(50)是其定义。在日志中,我看到密码字段的输入用单引号引起来,但对于电子邮件,它变成:('user@mail'.'com')。我还使用了knex,这是mysql文档中提到的替代方法,并且得到了相同的错误(用户名未知)。
有人可以告诉我如何通过nodejs + express在mysql db中存储电子邮件
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;
routes / 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('/');
});
routes / index.js中的console.log(必需正文):
{ 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服务器版本相对应的手册,以在'user_id
= 1,password
='passowrd00',u_firstname
='user',u_lastname
= '在第1行
错误(用于使用实际的SQL查询插入,每个值前后都用单引号引起来):
未处理的拒绝错误:ER_BAD_FIELD_ERROR:未知列“用户名” 在“字段列表”中
答案 0 :(得分:0)
我知道了! 这不是来自数据库的nodejs / expresjs错误。 在数据库中,我使用了触发器,却忘记使用NEW / OLD前缀。