我希望获得有关如何传递mySQL存储过程Javascript表单数据以在查询中用作参数的指导。
我一直在寻找关于如何使用mySQL存储过程和javascript表单数据作为参数的答案。
这就是我到目前为止:
var first_name = req.body.firstName,
last_name= req.body.lastName,
email= req.body.email,
password= req.body.password,
gpa= req.body.gpa,
major = req.body.major,
classification= req.body.classification;
var query = connection.query("CALL new_student()", function (err, result) {
if (err) {
res.send(err);
}
res.json(result);
})
这是存储过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `new_student`(IN first_name VARCHAR(45),
IN last_name VARCHAR(45), IN email VARCHAR(45), IN password VARCHAR(45), IN gpa DECIMAL(3,2),
IN major INT(10), IN classification VARCHAR(45))
BEGIN
INSERT INTO users (first_name, last_name, email, password)
VALUES (first_name, last_name, email, password);
INSERT INTO student (user_id, gpa, major, classification)
VALUES (LAST_INSERT_ID(),gpa, major, classification);
END
我的目的是获取变量或封装变量的Javascript对象,并通过“new_student()”传递它们。
我知道这看似微不足道。我正在学习如何使用Javascript存储过程。
答案 0 :(得分:2)
您需要为函数提供参数。如果您正在使用node-mysql-native,则可以使用类似预准备语句的语法提供参数。
var query = connection.query("CALL new_student(?, ?, ?, ?, ?, ?, ?)", [first_name, last_name, email, password, gpa, major, classification],
function (err, result) {
if (err) {
res.send(err);
}
res.json(result);
})
有关此内容的详情,请参阅Preventing SQL injection in Node.js