我对使用node和express没什么新意,我试图在我的节点应用程序中对mysql数据库进行简单的插入,但我不断获得ER_PARSE_ERROR [i].year, courseData[i].term
...
我试图查看一系列课程对象(courseData),将每个值插入到他们的列名中。这是我在
的地方for (var i = 0; i < courseData.length; i++){
var i = 1;
let sql = "INSERT INTO Course (year, term, code, title, "
+ "capacity, enrollment, credits, "
+ "mon, tue, wed, thu, fri, sat, "
+ "instructorLast, instructorFirst, "
+ "startDate, endDate, building, room) "
+ "VALUES (courseData[i].year, courseData[i].term, courseData[i].code, "
+ "courseData[i].title, courseData[i].capacity, courseData[i].enrollment, "
+ "courseData[i].credits, courseData[i].mon, courseData[i].tue, "
+ "courseData[i].wed, courseData[i].thu, courseData[i].fri "
+ "courseData[i].sat, courseData[i].instructorLast, courseData[i].instructorFirst, "
+ "courseData[i].startDate, courseData[i].endDate, courseData[i].building, courseData[i].room); ";
db.query(sql, function(err, result, fields){
console.log(err);
});
}
我尝试过单引号,双引号,围绕我的表名回拨,但没有任何效果。没有看到任何类似的问题,所以我想我会试试运气。
谢谢!
答案 0 :(得分:1)
我认为你需要两件事来修复这段代码。
1)Aaron Dietz是对的。您需要在年份列中进行反对
2)目前您插入对象名的字符串值而不是对象。例如,您插入“courseData [i] .title”而不是该对象的该部分的实际内容。此外,连接sql代码受到sql注入攻击。使用此处所述的转义方法https://github.com/mysqljs/mysql。
for (var i = 0; i < courseData.length; i++){
var i = 1;
let sql = `INSERT INTO Course (dyear, term, code, title,
capacity, enrollment, credits,
mon, tue, wed, thu, fri, sat,
instructorLast, instructorFirst,
startDate, endDate, building, room)
VALUES (?, ? , ?, ?, ?, ?, ?, ?, ?,
?,?,?,?,?,?,?,?,?,?)`;
let inserts = [courseData[i].year, courseData[i].term,
courseData[i].code, courseData[i].title,
courseData[i].capacity, courseData[i].enrollment,
courseData[i].credits, courseData[i].mon,
courseData[i].tue, courseData[i].wed,
courseData[i].thu, courseData[i].fri,
courseData[i].sat, courseData[i].instructorLast,
courseData[i].instructorFirst, courseData[i].startDate,
courseData[i].endDate, courseData[i].building,
courseData[i].room];
sql = mysql.format(sql, inserts);
db.query(sql, function(err, result, fields){
console.log(err);
});
}
如果这对您有用,请告诉我。