2016-12-15 5 views
1

Я хочу написать SQL-запрос, содержащий переменную NodeJS. Когда я это делаю, это дает мне ошибку «неопределенный».Как ввести переменную NodeJS в SQL-запрос

Я хочу, чтобы запрос SQL ниже распознал переменную flightNo. Как переменная NodeJS может быть введена в SQL-запрос? Нужны ли специальные символы вокруг него, как $ или ?.

app.get("/arrivals/:flightNo?", cors(), function(req,res){ 
var flightNo = req.params.flightNo; 

connection.query("SELECT * FROM arrivals WHERE flight = 'flightNo'", function(err, rows, fields) { 

ответ

4

Вам нужно будет поместить значение переменной в инструкцию SQL.

Это не хорошо:

"SELECT * FROM arrivals WHERE flight = 'flightNo'" 

Это будет работать, но это не безопасно от атак внедрения SQL:

"SELECT * FROM arrivals WHERE flight = '" + flightNo + "'" 

Чтобы обезопасить себя от SQL инъекций, вы можете избежать ваши ценности, как это:

"SELECT * FROM arrivals WHERE flight = '" + connection.escape(flightNo) + "'" 

Но самый лучший способ с заменой параметра:

app.get("/arrivals/:flightNo", cors(), function(req, res) { 
    var flightNo = req.params.flightNo; 

    var sql = "SELECT * FROM arrivals WHERE flight = ?"; 
    connection.query(sql, flightNo, function(err, rows, fields) { 
    }); 
}); 

Если у вас есть несколько замен, чтобы сделать, использовать массив:

app.get("/arrivals/:flightNo", cors(), function(req, res) { 
    var flightNo = req.params.flightNo; 
    var minSize = req.query.minSize; 

    var sql = "SELECT * FROM arrivals WHERE flight = ? AND size >= ?"; 
    connection.query(sql, [ flightNo, minSize ], function(err, rows, fields) { 
    }); 
}); 
0

Если вы используете> ES6:

connection.query(`SELECT * FROM arrivals WHERE flight = ${flightNo}`, function(err, rows, fields) { 

Если вы < ES6:

connection.query("SELECT * FROM arrivals WHERE flight = " + flightNo, function(err, rows, fields) { 

Пожалуйста, обратите внимание, что это ОЧЕНЬ ПЛОХО практика, как вы будете уязвимы для Атаки SQL-инъекций.

 Смежные вопросы

  • Нет связанных вопросов^_^