javascript - 使用 node.js 将行插入 MySQL 数据库时出现 ER_PARSE_ERROR
问题描述
尝试使用 node.js 向 mysql 表中添加一行,但不断收到语法错误。node/express 和 MySQL 的新手(几天前下载了这两个版本的最新版本)。已将我的代码与其他示例进行了比较,但无法弄清楚是什么导致了我一生中的错误。下面的代码和控制台输出。
const express = require('express');
const router = express.Router();
const bcrypt = require('bcryptjs');
const passport = require('passport');
const mysql = require('mysql');
const con = mysql.createConnection({
host: 'localhost',
user: 'theuser',
password: 'thepassword',
database: 'thedatabase'
});
con.connect(function(err) {
if (err) throw err;
console.log('User Connected!');
});
const date1 = new Date();
const newUser = {
first_name: first_name1,
last_name: last_name1,
email: email1,
password: password1,
date: date1
};
const newUser_val = Object.values(newUser)
console.log(newUser_val)
const sql = "INSERT INTO webusers (first_name, last_name, email, password, register_date) VALUES ?";
con.query(sql, [newUser_val], function (err, result, fields) {
if(result) {
req.flash('success_msg', 'You are now registered');
res.redirect('../')
} else {
console.log(err);
};
});
这是相关的控制台输出
User Connected!
[
'Pete',
'Sample',
'pete@gmail.com',
'$2a$10$6ufJWiCaubg8WjE.0AHqrOFi0z3W97mSN48v.vdO7pcl20ZPRBhXW',
2020-03-31T18:54:16.474Z
]
code: 'ER_PARSE_ERROR',
errno: 1064,
sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Pete', 'Sample', 'pete@gmail.com', '$2a$10$6ufJWiCaubg8WjE.0AHqrOFi0z3W97mSN48v' at line 1", sqlState: '42000',
index: 0,
sql: "INSERT INTO webusers (first_name, last_name, email, password, register_date) VALUES 'Pete', 'Sample', 'pete@gmail.com', '$2a$10$6ufJWiCaubg8WjE.0AHqrOFi0z3W97mSN48v.vdO7pcl20ZPRBhXW', '2020-03-31 14:54:16.474'"
}
解决方案
不知道为什么我的问题在没有任何评论的情况下被否决,但可惜我想通了。“?” 需要括号,在下面的代码中更正:
var sql = "INSERT INTO webusers (first_name, last_name, email, password, register_date) VALUES ( ? );";
很多示例中都缺少这些括号,这些括号是使我的代码正常工作所必需的……希望对您有所帮助。
推荐阅读
- azure - VSTS 将 cer 文件从 azure keyvault 复制到放置文件夹
- git - shell 命令的 git 别名无法正确扩展 $@
- mysql - 你需要(至少一个)mysql(Live Server)中的超级权限
- android - 详细活动屏幕加载问题。它继续加载而不停止
- excel - 每 N 个月固定一次,但有一个特定的开始月份
- javascript - ES6 Promise 然后跟随 catch 但 catch 永远不会被调用
- python - 如何删除数据框熊猫中相同和稀有的单词?
- docker - kubelet 版本高于控制平面版本
- javascript - Firebase 推送通知到不同的令牌组
- java - HttpClient 连接管理器关闭期间运行时异常的可能性?