MySQL Spaces в строке вызывает проблему

0

Приложение "Реакция и узел", конечная точка выглядит следующим образом =>

   app.get("/query", (req, res) => {
    con.query(
    'SELECT (${req.query.filter}),
     count("${req.query.filter}") AS count,
     AVG(age) AS averageAge
     from census_learn_sql
     GROUP BY (${req.query.filter})
     LIMIT ${req.query.limit}',
    (err, result, fields) => {
      err ? err : res.send(result);
    }
  );
});

когда req.query.filter - это строка без пробелов, например, "образование"... это работает. Когда я пытаюсь найти имя столбца, в котором есть пробелы, такие как "это имеет пробелы", этот запрос не работает. Как я могу это исправить?

  • 0
    Что значит «запрос не работает»? Это приводит к сообщению об ошибке?
  • 0
    Привет, Дэниел, это не имеет прямого отношения к твоему вопросу, но, судя по твоему коду, могу я указать, что ты определенно рискуешь сделать инъекцию SQL ... en.wikipedia.org/wiki/SQL_injection .
Теги:

1 ответ

1

Я думаю, что обратные тики должны помочь:

con.query(
'SELECT (\'${req.query.filter}\'),
 count(\'${req.query.filter}\') AS count,
 AVG(age) AS averageAge
 from census_learn_sql
 GROUP BY (\'${req.query.filter}\')
 LIMIT ${req.query.limit}',
(err, result, fields) => {
  err ? err : res.send(result);
}

);

И имхо, вам не нужны круглые скобки, а только когда у вас есть вызов функции агрегации, такой как COUNT:

con.query(
'SELECT \'${req.query.filter}\',
 count(\'${req.query.filter}\') AS count,
 AVG(age) AS averageAge
 from census_learn_sql
 GROUP BY \'${req.query.filter}\'
 LIMIT ${req.query.limit}',
(err, result, fields) => {
  err ? err : res.send(result);
}

);

И я бы настоятельно рекомендовал избегать использования имен столбцов с пробелами.

  • 0
    сработало, согласен!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню