Как убрать цитаты из req.params.id при отправке запроса - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь отправить данные из таблицы клиенту в зависимости от таблицы, которую выбирает пользователь.

/** GET ALL VAULES IN A PARTICULAR TABLE */
serve.get('/data/:id', (req, res)=>{
  dbConn.query(
    'SELECT * FROM ?',
    [req.params.id],
    (error, rows)=>{
      if(!error){
        //when there is no error
        res.send(rows);
      }else{
        //when there is an error
        res.send(error);
      }
    });//END dbConn
});//END SERVE

Исходя из вышесказанного, я ожидаю все данные в таблице, но яПродолжайте получать ошибку ниже, когда я делаю что-то вроде «localhost: 1234 / data / alert»

{
    "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 ''alert'' at line 1",
    "sqlState": "42000",
    "index": 0,
    "sql": "SELECT * FROM 'alert'"
}

Из этого я понимаю, что ошибка в том, что имя таблицы заключено в кавычки;как я могу исправить эту ошибку?

1 Ответ

0 голосов
/ 20 июня 2019

Существует два способа -

  1. Конкатенация строки запроса.
/** GET ALL VAULES IN A PARTICULAR TABLE */
serve.get('/data/:id', (req, res)=>{
  dbConn.query(
    'SELECT * FROM '+ req.params.id,
    (error, rows)=>{
      if(!error){
        //when there is no error
        res.send(rows);
      }else{
        //when there is an error
        res.send(error);
      }
    });//END dbConn
});//END SERVE

Правка - как упоминалось в комментариях @RiggsFolly, конкатенация запроса может привести кАтака впрыском.Имейте это в виду.

Если вы используете модуль mysql, используйте встроенный метод
/** GET ALL VAULES IN A PARTICULAR TABLE */
serve.get('/data/:id', (req, res)=>{
  dbConn.query(
    'SELECT * FROM ??',
    [req.params.id],
    (error, rows)=>{
      if(!error){
        //when there is no error
        res.send(rows);
      }else{
        //when there is an error
        res.send(error);
      }
    });//END dbConn
});//

? для значений, а ?? для экранирования идентификаторов запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...