MySQL 5.6.41 errno 1064: создание запроса MySQL с переменными - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть сервер (в настоящее время локальный, но скоро будет через AWS) Node.JS с Express, и я пытаюсь обновить экземпляр RDS с помощью запроса MySQL, когда я получаю следующую ошибку:

{ [Error: ER_PARSE_ERROR: 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 ''history0' = 'http://localhost:3000/' WHERE id = 1' at line 1]
  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 \'\'history0\' = \'http://localhost:3000/\' WHERE id = 1\' at line 1',
  sqlState: '42000',
  index: 0,
  sql: 'UPDATE infected SET \'history0\' = \'http://localhost:3000/\' WHERE id = 1;' }

Запрос POST, вызывающий ошибку:

app.post('/history', function(req, res) {
  var hist = 'history' + 0;
  var sql = 'UPDATE infected SET ? = ? WHERE id = ?;';
  connection.query(sql,  [hist, req.body[0].url, 1]);
});

Я использую hist в качестве переменной, потому что я планирую сделать это в цикле, но я не был уверен, что путьЯ заявляю, что это вызывает проблему, поэтому я оставил все как есть.req.body - это вывод JSON.stringify(), вызываемый при вызове на chrome.history.search().Поэтому я пытаюсь получить URL-адрес записи с индексом 0.

Я пробовал прямой вызов connection.query с жестко заданной строкой следующим образом:

connection.query("UPDATE infected SET history0='google.com' WHERE id='1'");

и он успешно обновляет базу данных, поэтому я считаю, что есть проблема с тем, как я использую вопросительные знаки для вставки переменных hist и req.body[0].url в запрос, но я не могу понять, в чем проблема.

1 Ответ

0 голосов
/ 30 ноября 2018

попробуй с двойным "??"для ключей, таким образом:

app.post('/history', function(req, res) {
  var hist = 'history' + 0;
  var sql = 'UPDATE infected SET ?? = ? WHERE id = ?;';
  connection.query(sql,  [hist, req.body[0].url, 1]);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...